189 8069 5689

java猴子分桃代码,猴子吃桃子java

用JAVA,递归,写猴子分桃问题

//楼上几位的有逻辑问题

伊通ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

public

class

Dg

{

static

int

ts=0;//桃子总数

int

fs=1;//记录分的次数

static

int

hs=5;//猴子数...

int

tsscope=5000;//桃子数的取值范围,范转太大容易溢出.

public

int

fT(int

t){

if(t==tsscope){

//当桃子数到了最大的取值范围时取消递补归

System.out.println("结束");

return

0;

}

else{

if((t-1)%hs==0

fs=hs){

if(fs==hs)

{

System.out.println("桃子数

=

"+ts

+"

时满足分桃条件");

}

fs+=1;

return

fT((t-1)/5*4);//

返回猴子拿走一份后的剩下的总数

}

else

{

//没满足条件

fs=1;//分的次数重置为1

return

fT(ts+=1);//桃子数加+1

}

}

}

public

static

void

main(String[]

args)

{

new

Dg().fT(0);

}

}

猴子分桃问题,用Java代码实现

设这一堆桃子至少有x个,先借给它们4个,5个猴子分别拿 了 a、b、c、d 、e个桃子(其中包括吃掉的一个),则可得:

a=1/5*(x+4)

b=1/5*4/5*(x+4)=4/5^2*(x+4)

....

e= 4^4/5^5*(x+4)

e应为整数,而4的4次方不能被5的5次方整除,只有(x+4)应是5的5次方的倍数,所以

(x+4)=3125k(k取自然数)

当k=1时,x=3121

这样得出一个算式,设有n个猴子,即n-1的n-1次方除以n的n次方=x+n-1

以n为传入的参数,x为返回值

x=n的n次方-n-1

java经典算法题——猴子吃桃

public class Monkey

{

public static void main(String[] args)

{

int sum=0,remain=1;

//每天吃剩的桃子加一个正好是前一天桃子的一半,每天桃子的总数就是前一天剩下桃子的数量

for(int day=9;day=1;day--)

{

sum=(remain+1)*2;

remain=sum;

System.out.println("第"+day+"天还剩"+remain+"个桃子");

}

System.out.println(sum);

}

}

猴子分桃!

答案是:3121个

思路:结果肯定是(5的某个倍数+1),从6开始,以五递增,验证能否满足条件,第一个能满足条件的就是结果。所谓满足条件就是减1后能被5整除,之后乘以4/5后,还能满足这个条件,循环5次。

源代码如下:

#include iostream.h

void main()

{

int i;

int j;

int k;

for (i = 6, j = 6, k = 0; k 5; )

{

if ((j - 1) % 5 == 0)

{

j = (j - 1) / 5 * 4;

k++;

}

else

{

i = i + 5;

j = i;

k = 0;

}

}

cout i endl;

}

猴子分桃(java问题)

public static void main(String[] args) {

int sum2; //用来进行逻辑运算的桃子总数

int sum1 = 6; //实际的桃子总数

int count; //分桃子次数(控制内层循环)

int index; //分桃子次数(符合分桃方案的次数)

boolean flag = true; //控制外层循环

while(flag){

index = 0; //初始化分桃子的次数为0

count = 0; //初始化为第一个猴子开始分桃子

sum2 = sum1; //初始化逻辑运算的桃子总数为实际的桃子总数,因为此变量用于计算,所以值会改变,为了不影响实际的桃子总数,所以用此变量代替!

while(count 5){ //猴子开是分桃子了!

if(sum2%5 == 1){ //如果桃子总数除以5余1说明此桃子总数符合分桃方案(sum2%5 == 1)

sum2 -= 1; //因为桃子被猴子扔掉一个,所以要减1

sum2 -= sum2/5; //又因为桃子被平均分为了5份并且被猴子拿走了1份,所以要减1/5

index++; //如果符合分桃方案就将计数器加1

}

if(index == 5){ //如果计数器等于5,也就是桃子的总数在符合分桃方案(sum2%5 == 1)的前提下分可5次的话!说明此桃子总数是符合条件的最小整数!

System.out.println("最少有 " + sum1 + " 个桃子!");

flag = false;//关闭外层循环;

break; //跳出内层循环;

}

count++; //5个猴子分桃子嘛!第一个分完了,当然该轮到第二个了!!所以要递增!

}

sum1 += 5; //桃子的总数只有每次递增5才可以符合分桃方案(sum2%5 == 1)!

}

}

不好意思啊,由于刚才比较赶时间,没好好写!

这回你再看看!! 如果还有哪里不清楚的话就问我好了!!

java海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个

public class MonkeyTest {

public static void main(String[] args) {

int sum=0;

int cnt=0;

outer:

for(int i=6;i10000;i++){

sum=i;

cnt=0;

for(int j=0;j5;j++){

if(sum%5==1){

sum=sum-((sum/5)+1);

cnt++;

if(cnt==5){

System.out.println(i);

break outer;

}

}else{

break;

}

}

}

}

}

/*

run:

3121

成功生成(总时间:0 秒)

分析:

624*5+1=3121

499*5+1=2497

399*5+1=1997

319*5+1=1597

255*5+1=1276

*/


本文标题:java猴子分桃代码,猴子吃桃子java
文章链接:http://cdxtjz.com/article/hegjde.html

其他资讯