备战蓝桥杯——算法经典趣题(渔夫捕鱼)递归,递推,循坏算法
2018-02-18 18:04
399 查看
渔夫捕鱼
某天晚上,A,B,C,D,,E,5个渔夫合伙捕鱼,捕到一定数量之后就停止捕鱼,各自到岸边休息。第一天早晨,渔夫A第一个醒来,他将鱼分作5份,把多余的一条仍会河中,
拿到其中自己的一份回家去了。渔夫B第二个醒来,也讲鱼分作5份,扔掉多余的一条,拿走
自己的一份。渔夫C第二个醒来,也讲鱼分作5份,扔掉多余的一条,拿走
自己的一份。渔夫D第二个醒来,也讲鱼分作5份,扔掉多余的一条,拿走
自己的一份。渔夫E第二个醒来,也讲鱼分作5份,扔掉多余的一条,拿走
自己的一份。问:这个渔夫至少捕到了多少条鱼?
分析:每个渔夫醒来的时候,鱼的数量应该是5的倍数再加1
假设,最后一个渔夫E醒来之后,鱼的数量应该至少是6
,在他扔掉一条鱼之后,任然可以平均分5分
那么渔夫D醒来应该:6*5+1=31 条鱼
渔夫C醒来应该:31*5+1=156 条鱼
渔夫B醒来应该:156*5+1=781 条鱼
渔夫A醒来应该:781*5+1=3906条鱼
这道题目其实非常简单,我用了3中不同的算法:分别是递推,递归,循坏
public class P10_9 {
public static void main(String[] args) {
int s=0;
int n=4;
int b=6;
for(;;) //使用循坏的方法
{
if(n!=0){ b=b*5+1; }
n--;
if(n==0){ break;}
}
System.out.println(f(5)); //--递归调用
System.out.println(b); //--使用循坏
System.out.println(fish(5)); //递推
}
public static int f(int n) //递归算法
{
int s=0;
if(n==1) return 6;
return f(n-1)*5+1;
}
public static int fish(int yufu) //递推算法
{
int init;
int n;
int s;
init=yufu+1;
n=yufu-1;
s=init; //开始的时候s是等于6
while(n!=0)
{
s=5*s+1;
n--;
}
return s;
}
}
相关文章推荐
- 备战蓝桥杯——算法经典趣题(五家共井)
- 备战蓝桥杯——算法经典趣题(舍罕王赏麦)
- 备战蓝桥杯——算法经典趣题(百钱买百鸡)
- 备战蓝桥杯——算法经典趣题(爱因斯坦的阶梯)
- 备战蓝桥杯——算法经典趣题(猴子吃桃)递归算法
- 蓝桥杯 算法训练 未名湖边的烦恼 (递推,递归)
- 【备战蓝桥杯】【递归】【C语言】【ALGO-20算法训练 求先序排列】
- 【备战蓝桥杯】【递归】【C语言】【ALGO-11算法训练 瓷砖铺放】
- 经典算法2:递归求解整数划分
- 学霸的迷宫-蓝桥杯算法提高-广搜 bfs 经典问题
- 算法竞赛入门经典: 第四章 函数与递归 4.2组合数
- 蓝桥杯 算法提高VIP 递归倒置字符数组(Java解题)
- 【算法竞赛入门经典】递归结构的动态规划 例题9-10 UVa1626
- 蓝桥杯 算法提高 3000米排名预测 DFS 递归搜索 next_permutation()使用
- 蓝桥杯算法训练 6-1 递归求二项式系数值
- 蓝桥杯 算法提高 学霸的迷宫 经典BFS问题
- 算法竞赛入门经典_4.3_递归
- 蓝桥杯 ALGO-150 算法训练 6-1 递归求二项式系数值
- 算法-蓝桥杯-算法训练 6-1 递归求二项式系数值 (JAVA)
- 算法竞赛入门经典: 第四章 函数与递归 4.3孪生素数