李敏  
日历
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
统计
  • 随笔 - 1
  • 文章 - 40
  • 评论 - 4
  • 引用 - 0

导航

常用链接

留言簿(1)

文章分类

文章档案

相册

收藏夹

它山之石

聚贤庄

搜索

  •  

最新评论

 
  A地有100个梨,猴子要把这100个梨搬到B地,A,B地之间的距离是50步,猴子一次只能搬50个梨,猴子每前进或后退一步都得吃一个梨,问到达B地最多剩多少个梨?最少需要几步?


  根据题意“A,B地之间的距离是50步,猴子一次只能搬50个梨。”所以猴子不可能直接这么从A地搬到B地,而是一定会中途返回,先把剩余的梨子放到某点,然后回到A地把剩余的梨子搬完,接着,当走到之前放置地点时,把之前剩余的梨子一起搬上,最后走到B地(往返的次数越少,则相对的得到的梨也越多,走的步数也越少),这里假设的是一次往返就能够搬完全部的梨子。

假设第一次走到M步的时候返回:
  50(猴子一次能够搬梨的总数)

  猴子吃掉的梨子数:n=M
  此时剩余的梨子数:50-n
  然而返回一趟后,剩余的梨子数:50-n-n  
  --猴子返回时,身上带着的是返回到A地时所要吃掉的梨子数(M),剩余的梨子(50-n-n)则留在了M地。

第二次从A地走到M步的时候:
  50(猴子一次能够搬梨的总数,此时也就是剩余的那50个梨子)

  猴子吃掉的梨子数:n=M
  剩余的梨子数:50-n


剩余的总梨子数:
  第一次到M步时剩余的梨子数+第二次到M步时剩余的梨子数-走完剩余(50-M)步时所要吃掉的梨子数
  (50-n-n )+(50-n)-(50-n)=50-2*n
  
所走的总步数:
  第一次走的M步+第一次返回时走的M步+第二次走的M步+走完剩余(50-M)步
   n + n + n + (50-n)=50+2*n

M的范围:
  
  1 M最大值(M=n)
    根据上面推出的剩余的总梨子数(50-2*n),即没有剩余(梨子数为零)时M为最大值。
     M=n=25
    由于25无实际意义,故值为24。(可以求出最少剩多少个梨?最多需要几步?)

  2 M最小值(M=n)
    猴子第一次返回到A地时剩余的梨子数+猴子第二次走到M步时剩余的梨子数<=50(猴子一次只能搬的梨子数)
     (50-n-n)+ (50-n)<=50
      (M=n)>=16.6  
     M为整数,故>=17。            (可以求出最多剩多少个梨?最少需要几步?)  


算法代码:(主要说明一下)
1  int n = 0;
2
3  for (int i = 17; i < 25; i++{
4       
5     n = i;
6
7     System.out.println(i + " " + (50 - 2 * n) + "  " + (50 + 2 * n));
8
9  }
 

posted on 2008-10-29 00:39 李敏 阅读(220) 评论(0)  编辑  收藏 所属分类: 算法

只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © 李敏 Powered by: 博客园 模板提供:沪江博客