演算法 猴子分桃問題

2021-07-27 15:38:28 字數 577 閱讀 6972

問題描述:

海灘上有一堆桃子,五隻猴子來分。第1只猴子把這堆桃子平均分為五份,多了乙個,這只猴子把多的乙個吃掉,拿走了乙份。

第二隻猴子把剩下的桃子又平均分為五份,又多了乙個,它同樣把多的乙個吃掉,拿走了乙份,第3、第4、第5只猴子都是這樣做的。

問海灘上原來最少有多少個桃子。

演算法分析:

假設海灘上原來有x個桃子,則第一只猴子分完拿走之後剩餘((x-1

)/5)*4桃子,第二隻桃子分完拿走之後剩餘

(((x-1

)/5)*4-1)/5)*4桃子,以此類推,可見最後剩餘的桃子一定能被4整除。現在假設第5只猴子拿走了桃子之後還剩餘y個,則根據公式((x-1

)/5)*4 = y,可得到x = (y*5)/4+1。

#includeint main()

if(count == 4)

}return 0;

}

程式中count是用來記錄每次剩餘的桃子可被4整除的次數,是找到的標誌。採用數學公式設出變數,在『倒退』表示出所求的變數,然後貪心演算法求解。

演算法 猴子分桃

1.問題 五隻猴子分桃。半夜,第一只猴子先起來,它把桃分成了相等的五堆,多出乙隻。於是,它吃掉了乙個,拿走了一堆 第二隻猴子起來一看,只有四堆桃。於是把四堆合在一起,分成相等的五堆,又多出乙個。於是,它也吃掉了乙個,拿走了一堆 其他幾隻猴子也都是 這樣分的。問 這堆桃至少有多少個?2.解決思路 可以...

猴子分桃問題

五隻猴子分桃。半夜,第一只猴子先起來,它把桃分成了相等的五堆,多出乙隻。於是,它吃掉了乙個,拿走了一堆 第二隻猴子起來一看,只有四堆桃。於是把四堆合在一起,分成相等的五堆,又多出乙個。於是,它也吃掉了乙個,拿走了一堆 其他幾隻猴子也都是 這樣分的。問 這堆桃至少有多少個?設桃子總數為s,第一只猴子分...

猴子分桃問題

5只猴子分一堆桃子,怎麼也不能分成5等份,只好先去睡覺,準備第二天再分。夜裡1只猴子偷偷爬起來,先吃掉1個桃子,然後將其分成5等份,藏起自己的乙份就去睡覺了 第2只猴子又爬起來,吃掉1個桃子後,也將桃子分成5等分,藏起自己的乙份睡覺去了 以後的3只猴子都先後照此辦理。問最初至少有多少個桃子?倒過來想...