題目:一只猴子有100個香蕉,把香蕉搬到50米之外的家里,每次最多拿50個香蕉,每走一米要吃掉一個香蕉,最后家里能剩下幾個香蕉。
答案:
很多人的方案:猴子先搬50根,走17米,在回來搬50根走到17米處,回來后再搬剩下的49根走完33米,最后得到16根!
但是其實可以剩下17根。
注意條件:每走一米要吃掉一個香蕉,那如果只走了0.9米就不用吃。
猴子先搬50根,走16.9米,在回來搬50根走到16.9米處,回來后再搬剩下的50根走完33.1米,最后得到17根!
分解:
1.先搬50根走到16.9米處,消耗了16個香蕉,返回到0米處需要帶上17根香蕉吃(之前吃了16個后又走了0.9米,加上要走的16.9米=17.8米),此時就在16.9米處剩下17根香蕉;
2.接着搬第二次50根,走到16.9米處,消耗了17個香蕉(之前吃了香蕉后多走了0.8米,加上要走的16.9米=17.7米),第二次搬的50個還剩余33個香蕉;
3.兩次下來在16.9米處總共還有50根香蕉,走完剩下的33.1米,消耗33個香蕉,最后得到17根香蕉。
為什么在16.9米(在16.6667到17米之間都可以),是為了最后可以直接搬50個走向家里,16.9的路程走三次=50.7米,加上最后走的33.1米 = 83.8米 0.8米沒有達到1米,猴子不需要吃香蕉
思考過程:
題中說了猴子每次最多只能拿50個,所以每次取香蕉要拿到50個才是最好的,100個可以拿兩次;
如果拿了50個香蕉直接走到家,則家里剩余0個,起點剩余50個,這時猴子不能返回到起點了,因為沒有香蕉吃了。所以第一次拿了50個應該找一個中間點停留,然后回起點拿剩下的50個香蕉;
那應該怎么選中間點呢?前面說了每次拿要拿50個才是最優的,所以需要找一個點使得搬兩次50個香蕉后能剩下50個香蕉,即搬兩次50的香蕉到中間點吃了50個香蕉還剩50個。
假設中間點距離起點距離為x米,搬兩次50的香蕉走了3x米
則有100-3x = 50解的x=16.6667米
注意題中是每走1米就吃一個香蕉,我們現在走16米的話就只消耗了16個香蕉,放下18個香蕉,帶上16個香蕉返回起點再消耗16個香蕉,取剩下的50個香蕉走到16米剩下34個香蕉,這樣還剩下34+18個香蕉=52,猴子沒法一次拿完。
16米為中間點會多余兩個香蕉,所以需要把這兩個香蕉消耗掉,需要在往返途中多走2米但是不到3米的路程才行,這樣有設比16米多走y米,則2=<3y<3 可得 0.66667 <=y<1,加上前面的16米即16.6667<=x<17
即只要中間點距離起點為
16.6667<=x<17
范圍的距離都可以使得中間點的剩余個數為50個,拿着剩下的50個香蕉走 50 -x米,
-17 < -x <=16.6667
33 < 50-x <= 33.3333
所以最后50個香蕉走完大於33米小於34米的路程到家,只需要吃33個香蕉,還剩17個香蕉。