渔夫分鱼算法的实现
A,B,C,D,E五个渔夫夜间合伙捕鱼,凌晨都疲惫不堪,各自在草丛中熟睡。
第二天清晨
A先醒来,他把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,
B醒来后,也把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,
C,D,E也按同样方法分鱼。问5人至少捕到多少条鱼?
请给出代码。。。。
[解决办法]
public class Csdn { public static void main(String[] args){ for (int i = 0;; i++) { int sum = i; for (int j = 0; j < 5; j++) { if (sum % 5 == 1) sum = (sum / 5)*4; else sum = 0; } if (sum != 0) { System.out.println(i); break; } } }}
[解决办法]
public class test {public static void main (String[] arge) {int i=0;do{i++;if ( f (5,i*5+1) ) {System.out.println (i*5+1);System.exit (0);}}while(true);}public static boolean f (int a,int b) {if ( (b-1)%5==0 ) {if (a==1) return true;else return f (a-1,(b-1)/5*4);}return false;}}
[解决办法]
这个好像是猴子分桃吧,怎么成渔夫了
[解决办法]
main(){int n,i,x,flag=1;for(n=6;flag;n++){for(x=n,i=1;flag&&i<=5;i++)if((x-1)%5==0)x=4*(x-1)/5;else flag=0;if(flag)break;else flag=1;}printf("Total fish=%d\n",n);}
[解决办法]
public class Fy { /** * 求解渔夫分鱼问题(穷举法)。 * @param num 渔夫数。 * @param mod 每次丢掉鱼数。 * @return 这些渔夫至少捕到多少条鱼能使条件成立。 */ public static int fy(final int num, final int mod) { if (num < 1 || mod < 1) return -1; int min = num + mod; while (min < Integer.MAX_VALUE) { int m = min; int i = num; do { if (m % num != mod) break; m -= mod; m -= m / num; } while (--i > 0); if (i == 0) return min; ++min; } return -1; } public static void main(String[] args) { System.out.println(fy(5, 1)); }}
[解决办法]
总鱼数 扔掉一条 平分5份后其中一份的鱼数lic public void feed(); public void enjoy();}class Student implements CarePet { String name; Student(String name) { this.name = name; } public void feed() { System.out.println("学生喂养宠物"); } public void enjoy() { System.out.println("宠物很enjoy~~"); }}class Farmer extends Student implements CarePet { Farmer(String n) { super(n); } public void feed() { System.out.println("农民喂养宠物"); } public void enjoy() { System.out.println("宠物同时也是食物"); }}public class Tinterface { public static void main(String args[]) { CarePet c1 = new Student("seven"); System.out.println("一个叫" + c1.name + "的"); c1.feed(); c1.enjoy(); System.out.println("=========================================================================="); CarePet c2 = new Farmer("jack"); System.out.println("一个叫" + c2.name + "的"); c2.feed(); c2.enjoy(); }}
[解决办法]
3楼 lord_is_layuping 的算法也正确,速度比我的要快些。
[解决办法]
学习.......ing
[解决办法]
应该是3906条鱼,因为问题问的是至少捕到多少鱼,所以最后一个渔夫分鱼时,应该是6条鱼
public class CentFish{
private static long count_peach(int n) //n为5个渔夫
{
if(n == 1)
{
return 6;
}
else
{
return count_peach(n - 1) * 5 + 1;
}
}
public static void main(String[] args) {
System.out.print(count_peach(5));
}
}
[解决办法]
学习学习
[解决办法]
应该是3906条,,
用递归。。。
[code=Java][/code]class Demo{
public static void main(String[] args){
long x=f(5);
System.out.println("有"+x+"条鱼");
}
static long f(int i){
if(i==1){
return 6;
}
else
return f(i-1)*5+1;
}
}
[解决办法]
答案3906验证过程:
总鱼数 扔掉一条 平分5份后其中一份的鱼数3906 3905 7813124 3123 624.6 ???
[解决办法]
恩,是错了,呼呼呼!
[解决办法]
搅局成功。 大家仔细看看题目。呵呵!
[解决办法]
[解决办法]
/**
* @(#)Fenyu.java
*
*
* @nuciewth
* @version 1.00 2008/6/29
*/
public class Fenyu {
public Fenyu() {
}
public static void main (String[] args) {
int temp=1;
for(int i = 1 ; i < 6; i++){
temp=temp*5+1;
}
System.out.println(temp);
}
}
[解决办法]
给一个简单的算法,不需要递归
public static void main(String[] arge) { int i, j, num; for (i = 1;; i++) { num = i; for (j = 0; j < 4; j++) { if ((num * 5 + 1) * 5 % 4 != 0) break; else num = (num * 5 + 1) / 4; } if (j == 4) { System.out.println("num*5+1 :" + (num * 5 + 1)); System.out.println("i :" + i); break; } } }
[解决办法]
决定研究下算法了......
[解决办法]
用递归怎么做的来的就有问题啊??
来个大虾解决下啊!!