社区
非技术区
帖子详情
猴子吃香蕉的编程(一个猴子有100个香蕉,离家50米,猴子最多只能搬50个香蕉,猴子每走1米要吃一根香蕉,问最多能搬多少香蕉回家 )
韩楚风
领域专家: 数据库技术领域
2009-11-01 12:30:05
25还是16,各说不一,求高手讲清道理
...全文
10403
16
打赏
收藏
猴子吃香蕉的编程(一个猴子有100个香蕉,离家50米,猴子最多只能搬50个香蕉,猴子每走1米要吃一根香蕉,问最多能搬多少香蕉回家 )
25还是16,各说不一,求高手讲清道理
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jkx01whg
2009-11-04
打赏
举报
回复
猴子没搬香蕉时不用吃???
forster
2009-11-04
打赏
举报
回复
原来这样啊,,关键是就是要一直搬着50跟走啊
搬50跟走一米吃一根 不搬应该吃的少。。。
贾子枫
2009-11-04
打赏
举报
回复
再补充详细一点:
猴子搬50根香蕉,假设出发时为0米。
走到1米,吃一根,放两根。
走到16米,吃一根,放两根。
这是手里还有2根,走到17米,吃一根,放一根。然后回过身。
走到16米,吃掉地上一根。
走到1米,吃掉地上一根。走到0米,吃掉地上一根。地上还剩49根。
抱着这49根,走到17米,吃到17米。还剩下33米要走。
所以走到家还有16根。
forster
2009-11-04
打赏
举报
回复
有意思撒 我正吃呢。。
贾子枫
2009-11-04
打赏
举报
回复
Lz题目写的都不是很清楚吧。。
微软面试智力题
一个小猴子边上有100根香蕉,它要走过50米才能到家,
每次它最多搬50根香蕉,(多了就被压死了),它每走
1米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。
提示:他可以把香蕉放下往返的走,但是必须保证它每走
一米都能有香蕉吃。也可以走到n米时,放下一些香蕉,
拿着n根香蕉走回去重新搬50根。
答案在下面:
(50-17)+16=49
16跟..............................................
猴子走1米吃一根回一米吃一跟在去一米吃一根也就是搬一次要走3趟
结果一次备50跟,那么就是50/3=16。6666米
假设17米
猴子走了17米再回去搬剩下的50跟得 50-17=33跟
再回来,然后加上17米处第一次搬的蕉蕉
再然后背着蕉蕉回家,结果应该是16跟
liuchui2009
2009-11-04
打赏
举报
回复
声明一下 不是原创
liuchui2009
2009-11-04
打赏
举报
回复
100个香至少走三次 150个香蕉最少走7次 200个香蕉至少走13次 与汉诺塔不同
C程序:
main()
{
int n,j,i,t,s,l;
/*n为倍数 j为余数 i为步数 t为最大携带数 s为香蕉总数 l为总路程*/
printf("请分别输入香蕉总数,离家路程,最大携带量:\n");
scanf("%d%d%d",&s,&l,&t);
while(s!=0) {
j=s%t;
n=s/t;
i=0;
if(j>2)
{for(;++i;)
if(j-2*i<=i*(2*n-1)+2)break;
l-=i;s-=i*(2*n+1);}
else if(j==0)
{for(;++i;)if(t<=i*(2*n-1))break;
if(tl-=i;s-=i*(2*n-1);}
else s-=j;
}
/*求出猴子把香蕉全部吃完能走多远
大于离家路程多少单位就是可带回的香蕉个数*/
l=-l;
if(l<=0)printf("\n猴子带不回香蕉");
else printf("\n猴子最多能带回%d个香蕉",l);
getch();
}
参考资料:http://www.bc-cn.net/bbs/Article/20055/9/17747.html
韩楚风
2009-11-04
打赏
举报
回复
如果是16的话,那是怎么一个搬法,想不明白
tonglichao09
2009-11-02
打赏
举报
回复
[Quote=引用楼主 senllang 的回复:]
25还是16,各说不一,求高手讲清道理
[/Quote]
是16
这题我笔试也做了
因为只能搬50个,其实就是最大限度的消耗搬不动的五十个同时要把另外的五十往前运
tonglichao09
2009-11-02
打赏
举报
回复
瞎说,回去不用吃啊[Quote=引用 6 楼 pengderun 的回复:]
25,先搬50個走25米放下,回去再搬50個走25米,然後在25米那裏一次搬完剩下的50個,最後剩25個。
[/Quote]
pengderun
2009-11-02
打赏
举报
回复
25,先搬50個走25米放下,回去再搬50個走25米,然後在25米那裏一次搬完剩下的50個,最後剩25個。
buyan2009
2009-11-01
打赏
举报
回复
1
16
理由如下:
去(搬一部分)——回来——去(搬剩余):这样的路程为x,消耗3*x个香蕉
当100-3*x<=50时,一次搬完剩余路程。临界值x=17。
故到家时香蕉数=100-3*17-(50-17)=16
baihacker
2009-11-01
打赏
举报
回复
from:百度知道
汽车要多少有才可以穿过沙漠?(请写出计算过程)
悬赏分:50 - 解决时间:2007-8-29 16:52
一卡车到563千米宽的沙漠边缘,卡车走一千米要一升油,卡车只能带315升油,沙漠边有加油站,在途中也可以设立驻油点。汽车要多少有才可以穿过沙漠?(请写出计算过程)
问题补充:汽车要多少油才可以穿过沙漠?
提问者: mzp646464 - 助理 二级 最佳答案
此题是有难度的。我希望没有理解题意的人不要在这里瞎说!
正确解法:
1)因为卡车的总载油能力为315升,卡车每千米耗油1升,为了消耗最少的汽油,最后一个储油点应该离终点315千米,且此处储油315升,这样恰好能穿越沙漠。即储油点m=1处离终点315千米,储油315升;
2)为了在m=1处储315升汽油,卡车最少从储油点m=2处开两趟载满油的车到储油点m=1处,则储油点m=2处储油315*2=630升,离终点315+315/3=420千米。(储油点m=2处到储油点m=1处开三趟需要开三次路程)
3)为了在储油点m=2处储630升汽油,卡车最少从储油点m=3处开三趟载满油的车到储油点m=2处,则储油点m=3处储油315*3=945升,离终点420+315/5=483千米。(储油点m=3处到储油点m=2处开三趟需要开五次路程)
4)为了在储油点m=3处储945升汽油,卡车最少从储油点m=4处开四趟载满油的车到储油点m=3处,则储油点m=4处储油315*4=1260升,离终点483+315/7=528千米。(储油点m=4处到储油点m=3处开三趟需要开七次路程)
5)为了在储油点m=4处储1260升汽油,卡车最少从储油点m=5处开五趟载满油的车到储油点m=4处,则储油点m=5处储油315*5=1575升,离终点528+315/9=563千米。(储油点m=5处到储油点m=4处开三趟需要开九次路程)
至此,可知m=5处为起点。所以共需油1575升
回答者: li_ufo2006 - 秀才 三级 8-29 15:49
查看用户评论(1)>>
enter333
2009-11-01
打赏
举报
回复
纯帮顶。。
AAA20090987
2009-11-01
打赏
举报
回复
能在半路上放下香蕉吗。
非兔子_Logic0
2009-11-01
打赏
举报
回复
[Quote=引用 3 楼 baihacker 的回复:]
from:百度知道
汽车要多少有才可以穿过沙漠?(请写出计算过程)
悬赏分:50 - 解决时间:2007-8-29 16:52
一卡车到563千米宽的沙漠边缘,卡车走一千米要一升油,卡车只能带315升油,沙漠边有加油站,在途中也可以设立驻油点。汽车要多少有才可以穿过沙漠?(请写出计算过程)
问题补充:汽车要多少油才可以穿过沙漠?
提问者: mzp646464 - 助理 二级 最佳答案
此题是有难度的。我希望没有理解题意的人不要在这里瞎说!
正确解法:
1)因为卡车的总载油能力为315升,卡车每千米耗油1升,为了消耗最少的汽油,最后一个储油点应该离终点315千米,且此处储油315升,这样恰好能穿越沙漠。即储油点m=1处离终点315千米,储油315升;
2)为了在m=1处储315升汽油,卡车最少从储油点m=2处开两趟载满油的车到储油点m=1处,则储油点m=2处储油315*2=630升,离终点315+315/3=420千米。(储油点m=2处到储油点m=1处开三趟需要开三次路程)
3)为了在储油点m=2处储630升汽油,卡车最少从储油点m=3处开三趟载满油的车到储油点m=2处,则储油点m=3处储油315*3=945升,离终点420+315/5=483千米。(储油点m=3处到储油点m=2处开三趟需要开五次路程)
4)为了在储油点m=3处储945升汽油,卡车最少从储油点m=4处开四趟载满油的车到储油点m=3处,则储油点m=4处储油315*4=1260升,离终点483+315/7=528千米。(储油点m=4处到储油点m=3处开三趟需要开七次路程)
5)为了在储油点m=4处储1260升汽油,卡车最少从储油点m=5处开五趟载满油的车到储油点m=4处,则储油点m=5处储油315*5=1575升,离终点528+315/9=563千米。(储油点m=5处到储油点m=4处开三趟需要开九次路程)
至此,可知m=5处为起点。所以共需油1575升
回答者: li_ufo2006 - 秀才 三级 8-29 15:49
查看用户评论(1)>>
[/Quote]
呵呵,这是有一年的NOIP题,跟楼主的一样。是个逆向分析题
研究性学习趣味数学小游戏PPT学习教案.pptx
研究性学习趣味数学小游戏PPT学习教案.pptx
C语言:
一个
小
猴子
边上有
100
根
香蕉
,他要
走
过
50
米
才能到家,每次他
最多
搬
50
根
香蕉
搬
到家里,请
问
它
最多
能
把多少根
香蕉
搬
到家里?
代码如下: /******************************************************* *功能:求以下
问
题 *
一个
小
猴子
边上有
100
根
香蕉
,他要
走
过
50
米
才能到家,每 *次他
最多
搬
50
根
香蕉
搬
到家里,请
问
它
最多
能
把多少根
香蕉
*
搬
到家里?(提示:他可以把
香蕉
放下往返
走
,但他必须保 *证每
走
一
米
有
香蕉
吃
,也可以
走
到n
米
放下一些
香蕉
拿着n根 *
香蕉
回去...
猴子
搬
香蕉
问
题
一百根
香蕉
,小
猴子
离家
五十
米
,一次能拿
50
根
香蕉
,每1
米
吃
一根
,
最多
能
有多少根
香蕉
搬
回家
? 此题我们可以这样考虑,
猴子
一次
最多
只能
拿
50
根
香蕉
,那么当
香蕉
总数大于
50
根的时候,
猴子
就必须往返回起点再
搬
第二次,因此我们可以通过写
一个
循环来得出答案 public class Banana { public static void main(String[] args) { //m --
猴子
走
的距离 n --
香蕉
的个数 for (int m = 1, n = 10
面试题:
猴子
最多
搬
多少个
香蕉
?
一个
猴子
,身带
100
个
香蕉
,他距
离家
50
米
. 这个
猴子
要带
香蕉
回去.但是他一次
最多
只能
背
50
个
香蕉
. 而且,每
走
一
米
他就要
吃
掉
一个
香蕉
(往回
走
也要
吃
香蕉
).
问
:这个
猴子
最后 此
问
题可以化简为:
猴子
带
50
个
香蕉
走
到x
米
处原路返回取
走
剩下
50
香蕉
走
到终点,
问
x取何值终点
香蕉
最多
。【化简理由:由于折返路上会损耗
香蕉
,
100
=
50
*2,故只需并只必折返一次。】 下面开始计算。带
50
个
走
x
米
剩余(
50
-x)
香蕉
,放下(
50
-2x)
香蕉
在原地,携带x
香蕉
返回原点,x
香蕉
正好被路上消耗。带
50
香蕉
走
x
米
至前面.
关于
100
根
香蕉
,
猴子
要背回
50
米
远的家,一次
最多
只能
背
50
根
香蕉
,但
猴子
每
走
1
米
后就要
吃
1根
香蕉
,
问
猴子
最多
可以背多少根
香蕉
回家
?
100
根
香蕉
,
猴子
要背回
50
米
远的家,一次
最多
只能
背
50
根
香蕉
,但
猴子
每
走
1
米
后就要
吃
1根
香蕉
,
问
猴子
最多
可以背多少根
香蕉
回家
? 用java代码如何实现? package com.li; public class Test { //总的
香蕉
数 private static int count=
100
; //每次
搬
运的最大
香蕉
数和
回家
的步数
非技术区
15,446
社区成员
58,117
社区内容
发帖
与我相关
我的任务
非技术区
C/C++ 非技术区
复制链接
扫一扫
分享
社区描述
C/C++ 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章