java编程算法之猴子吃桃问题

/*猴子吃桃问题1:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
        第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
        的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少*/

   (先把问题理解了,写程序就容易了)

解析:由题可知:有若干(num)桃子,每天都是吃前天剩下的一半多一个,到第十天后就剩下1个桃子,那我们就逆推回去

           num=2*(num+1),然后写个循环语句,让计算机自己算出结果;

代码一:在代码二处;

/*猴子吃桃问题2:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只
    猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
    一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
    问海滩上原来最少有多少个桃子?*/

解析:一样假设有total个桃子,第一个猴子拿走自己的一份剩下total=(total-1)/5*4;逆推回去 ()/4*5+1;

         假设至少剩下total=4个,4的倍数,设初始值last=4;然后先写一个for循环让其循环,在循环中写个if判断语句判断其是否符合

        total%4==0的条件,然后计算输出

代码二:

package kcw.com;

public class MonkeyEating {

	public static void main(String[] args) {
	/*猴子吃桃问题1:*/
         int num=1;  //初始为1
         for(int i=2;i<=10;i++) {
        	  num=2*(num+1);   //若干个桃子数计算公式
        	  }  	    
         System.out.println(num);
	
	/*猴子吃桃问题2:*/
         //(total-1)/5*4
         //  /4*5+1
         int last=4;
         int total=4;
         for(int i=1;i<=5;) {
        	 if(total%4==0) {    //条件满足计算下列公式
        		 total=total/4*5+1;   //逆推得出total计算公式
        		 i++;   //满足条件进行自加
        	 }else {
        		 i=1;   //不满条件回到最初重新开始
        		 last+=4;   //以4一个循环
        		 total=last;  //赋值给total重新计算
        	 }
         }
         System.out.println(total);  
       
	
   }
}

总结:算法问题,可能描述不是很清晰,但希望能够帮助到你们,给你们提供一些思路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值