猴子背香蕉

猴子背香蕉問題

問題描述

  有一個猴子,身邊有100根香蕉,一次最多背50根,離家50步。它揹着香蕉每走一步都會吃掉一根,請問到家時,它最多剩下幾根?

個人思路

  我覺得要抓住一點,就是如何達到最優:走同樣多的路程,每次儘可能地多背,因爲少走一趟一定比多走一趟消耗的香蕉少
  於是,問題就成了“什麼樣的策略下,算是‘多背’、‘少走’呢?”。
  對於給出的條件,你想啊,‘多背’肯定是背完50根香蕉對吧;‘少走’的話就依賴於前一次走過的路程,比如這題,如果我一次性走完(50步),那麼一點也不剩,如果我走兩次,這怎麼走呢?別忘了要滿足‘多背’的原則,那麼第二次我也希望能背50根香蕉!於是,第一次就走25步,100-25*2=50,正好第二次可以背完,且滿足‘多背’!。

推廣

  猴子有x根香蕉,最多背y根,離家z步,求最多香蕉數目?

  1. x -= x%y;
  2. 走y/2步(y/2>=z),背y個香蕉,然後折返,重複2直到背完香蕉(第一步要去掉“零頭”就是爲了防止猴子爲了拿少於y/2個香蕉而回不來……);
  3. 一直重複2,直到到達目的地或者永遠到不了。
發佈了88 篇原創文章 · 獲贊 9 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章