您好,登錄后才能下訂單哦!
這篇文章主要介紹了php怎么解決三個水桶等分8升水問題的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇php怎么解決三個水桶等分8升水問題文章都會有所收獲,下面我們一起來看看吧。
有三個容積分別為3升、5升、8升的水桶,其中容積為8升的水桶中裝滿了水,容積為3升和容積為5升的水桶都是空的。三個水桶都沒有刻度,現(xiàn)在需要將大水桶中的8升水等分成兩份,每份都是4升水,附加條件是只能這三個水桶,不能借助其他輔助容器。
“恩,是的,這是一個很經(jīng)典的問題?!?/p>
“然而,我們并不能想全,不信請繼續(xù)往下看?!?/p>
”廢話不多說,直接看方法吧?!?/p>
將8L的水桶中的水,倒?jié)M5L的水桶,這時:8L水桶為3L、5L水桶為5L、3L水桶為0L
將5L的水桶中的水,倒?jié)M3L的水桶,這時:8L水桶為3L、5L水桶為2L、3L水桶為3L
將3L的水桶中的水,倒入8L的水桶,這時:8L水桶為6L、5L水桶為2L、3L水桶為0L
將5L的水桶中的水,倒入3L的水桶,這時:8L水桶為6L、5L水桶為0L、3L水桶為2L
將8L的水桶中的水,倒入5L的水桶,這時:8L水桶為1L、5L水桶為5L、3L水桶為2L
將5L的水桶中的水,倒?jié)M3L的水桶,這時:8L水桶為1L、5L水桶為4L、3L水桶為3L
將3L的水桶中的水,倒入8L的水桶,這時:8L水桶為4L、5L水桶為4L、3L水桶為0L
將8L的水桶中的水,倒?jié)M3L的水桶,這時:8L水桶為5L、5L水桶為0L、3L水桶為3L
將3L的水桶中的水,倒入5L的水桶,這時:8L水桶為5L、5L水桶為3L、3L水桶為0L
將8L的水桶中的水,倒?jié)M3L的水桶,這時:8L水桶為2L、5L水桶為3L、3L水桶為3L
將3L的水桶中的水,倒?jié)M5L的水桶,這時:8L水桶為2L、5L水桶為5L、3L水桶為1L
將5L的水桶中的水,倒入8L的水桶,這時:8L水桶為7L、5L水桶為0L、3L水桶為1L
將3L的水桶中的水,倒入5L的水桶,這時:8L水桶為7L、5L水桶為1L、3L水桶為0L
將8L的水桶中的水,倒?jié)M3L的水桶,這時:8L水桶為4L、5L水桶為1L、3L水桶為3L
將3L的水桶中的水,倒入5L的水桶,這時:8L水桶為4L、5L水桶為4L、3L水桶為0L
我相信答案肯定不止兩個,到底有多少種答案?
帶著這個疑問,我們來設(shè)計一個算法吧。
解決這個問題的關(guān)鍵是怎么通過倒水湊出確定的1升水或能容納1升水的空間。
例如,當(dāng)8L水桶或5L水桶或3L水桶有1L水時,都能快速倒出4L水。
“窮舉法”
水桶初始狀態(tài):8L水桶裝滿水,3L和5L的水桶為空。 水桶最終狀態(tài):3L水桶為空,5L和8L的水桶各4L水。
假設(shè)將每個狀態(tài)下三個水桶中的水的體積作為status。
從 $status = array(8,0,0) 得到 $status = array(4,4,0)。
當(dāng)然還會有一些限制:
1.各個水桶的都有最大值:
0 <= status[0] <= 8;
0 <= status[1] <= 5;
0 <= status[2] <= 3;
2.當(dāng)前倒水之后各個水桶的狀態(tài),與歷史倒水之后各個水桶的狀態(tài),不能相同。
3.當(dāng)前水桶為空時,不能倒給其他水桶。
4.當(dāng)前水桶為最大容積時,其他水桶不能再向這個水桶倒水。
關(guān)于“php怎么解決三個水桶等分8升水問題”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“php怎么解決三個水桶等分8升水問題”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。