回溯 四人分酒問題

2021-05-01 19:50:06 字數 737 閱讀 9823

題目:兩瓶

8兩的酒,乙個

3兩的杯子,瓶和杯子都沒有刻度,如何將酒平均分給四個人喝?也就是每個人分

4兩酒,也沒什麼限制條件,當然,喝過的酒不能再吐出來(:

>)。

思路:回溯演算法,遞迴

對當前酒瓶,杯和人當前存的酒量設定為一種狀態,最初始的狀態為(

880 ,

0000

),最終的狀態為(

000 ,

4444

),狀態的改變為分酒的選擇,一共有

18 種選擇: a

類:瓶子到杯子,2 種

b 類:杯子到瓶子,2 種

c 類:杯子到人,4 種

d 類:瓶子到人,8 種

e 類:瓶子到瓶子,

2 種(我沒有考慮)。

f 類:人到杯子,人到瓶子,人到人不被允許。

不能用簡單窮舉,因為,如果窮舉,要達到可行解,需要

18^24

次方這麼多嘗試,計算機沒能力計算這麼多步的。

回溯方法是深度搜尋,選定乙個方法一路向下走,直到沒得路可走了,也就是所有的選擇都到達了非法的狀態,那麼回到上乙個狀態,選擇下乙個選擇,這樣一路到達可行解。雖然不是最優的,一定是最快的。

實現**如下:

四人過橋問題

問題描述 有a b c d四個人,要在夜裡過一座橋。他們通過這座橋分別需要耗時1 2 5 10分鐘,只有一支手電,並且同時最多只能兩個人一起過橋。請問,如何安排,能夠在17分鐘內這四個人都過橋?思路 由於橋最多只能允許兩個人一起過橋,一定是過橋時間最長的兩個人一起過橋,這樣時間是最短的,同時,由於只...

php試題 四人過橋問題

那是乙個漆黑寂靜的夜 一家四口穿過了詛咒叢林來到了通往人類世界的無妄之橋 橋頭僅有的一盞長明燈 映照著對過橋者的警示 無妄之橋,每次最多隻可通行兩人,橋上詛咒密布,必須在此長明燈庇佑下方可通過,如果38分鐘內未能全員通過 後果自負。四人過橋,同一時間只能過兩人,並且必須有一人提燈,如何在38分鐘內四...

2034 四人投票

time limit 20 second memory limit 20 mb 問題描述 競選時,要求選民在a,b,c,d四個候選人中選擇 人數不限 如果選擇了這四個人以外的人員,視為廢票。統計時輸入 結束,請按候選人得票數從大到小順序輸出候選人和其票數。0票也輸出。輸入在同一行 輸入字串以 結束 ...