泊松是法國數學家、物理學家和力學家。他一生致力科學事業,成果頗多。有許多著名的公式定理以他的名字命名,比如概率論中著名的泊松分布。
有一次閒暇時,他提出過乙個有趣的問題,後稱為:「泊松分酒」。在我國古代也提出過類似問題,遺憾的是沒有進行徹底探索,其中流傳較多是:「韓信走馬分油」問題。
有3個容器,容量分別為12公升,8公升,5公升。其中12公升中裝滿油,另外兩個空著。要求你只用3個容器操作,最後使得某個容器中正好有6公升油。
下面的列表是可能的操作狀態記錄:
12,0,0
4,8,0
4,3,5
9,3,0
9,0,3
1,8,3
1,6,5
每行3個資料,分別表示12,8,6公升容器中的油量
第一行表示初始狀態,第二行表示把12公升倒入8公升容器後的狀態,第三行是8公升倒入5公升,...
當然,同乙個題目可能有多種不同的正確操作步驟。
本題目的要求是,請你編寫程式,由使用者輸入:各個容器的容量,開始的狀態,和要求的目標油量,程式則通過計算輸出一種實現的步驟(不需要找到所有可能的方法)。如果沒有可能實現,則輸出:「不可能」。
例如,使用者輸入:
12,8,5,12,0,0,6
使用者輸入的前三個數是容器容量(由大到小),接下來三個數是三個容器開始時的油量配置,最後乙個數是要求得到的油量(放在哪個容器裡得到都可以)
則程式可以輸出(答案不唯一,只驗證操作可行性):
12,0,0
4,8,0
4,3,5
9,3,0
9,0,3
1,8,3
1,6,5
每一行表示乙個操作過程中的油量狀態。
注意:請仔細除錯!您的程式只有能執行出正確結果的時候才有機會得分!
解題思路:
開始的時候只是以為就是個深搜的題目結果深搜下去好像不知道迴圈的過程,其實之後看別人的解題報告的時候好像也還是行的,一共有六種情況,然後對這六種進行編立就行了(注意邊界條件,詳情:**:但是這樣好像實現起來有點麻煩
下面**的思路是:為了避免重複,也就是可能在倒的時候倒過來倒過去又回來了,但是還沒有遍歷完所有的方式,也就是說漏掉了很多種方式就跳出「不可能」了,所以說遍歷的時候還是有技巧有順序的,這應該也是這道題的精髓所在和難點吧,所以說遍歷的順序是什麼呢,總該有個原則吧?是的,必須有原則,要不然這道題好像就做不出來了。
那麼原則是什麼呢?就是在倒的時候一定保持是從大容器中倒到次大的,次大的倒向最小的,如果分別用a,b,c來表示的話就是a->b,b->c,c->a按照這個順序還是有條件的,如果不加條件,只是頑固的按照這個順序遍歷的話多數是倒不出來的,開始的時候就是吃了這個虧,首先應該看b是不是有,如果沒有的話就要從a裡往b裡倒了,這樣在為往c裡倒做鋪墊,當然c如果是滿了的話,還是要倒到a裡,這樣的話實現起來就好了,題目ok。。。
至於為什麼是從大的往小的倒,這個我現在還真的是說不太清楚,但是好像用別的方式到更沒有原則,另外我感覺這樣的話因為用小的作為量度可以把大的一步步分割,相當於把大的切小了在放,這樣的話離出現想要的結果就更進一步了,所以。。。剩下的以後再研究,總感覺這道題還有點什麼漏洞,並且能夠理論證明出來,但是能力好像真的有限。
ps:網上答案好像只有幾個版本哦,弱弱的問一句這樣機械有意思麼
#include #include #include using namespace std;
int path[100][3],coun=0;
int vola,volb,volc,nowa,nowb,nowc,pur;
void atob()
else
}void btoc()
else
} void ctoa()
else
} int main ()
while(1)
for(int i=0;i
} }return 0;
}
藍橋杯 java 海盜分酒
有一群海盜 不多於20人 在船上比拼酒量。過程如下 開啟一瓶酒,所有在場的人平分喝下,有幾個人倒下了。再開啟一瓶酒平分,又有倒下的,再次重複.直到開了第4瓶酒,坐著的已經所剩無幾,海盜船長也在其中。當第4瓶酒平分喝下後,大家都倒下了。請你根據這些資訊,推斷開始有多少人,每一輪喝下來還剩多少人。如果有...
藍橋杯 泊松分酒 窮舉遞迴
題目 泊松是法國數學家 物理學家和力學家。他一生致力科學事業,成果頗多。有許多著名的公式定理以他的名字命名,比如概率論中著名的泊松分布。有一次閒暇時,他提出過乙個有趣的問題,後稱為 泊松分酒 在我國古代也提出過類似問題,遺憾的是沒有進行徹底探索,其中流傳較多是 韓信走馬分油 問題。有3個容器,容量分...
藍橋杯 泊松分酒 窮舉遞迴
題目 泊松是法國數學家 物理學家和力學家。他一生致力科學事業,成果頗多。有許多著名的公式定理以他的名字命名,比如概率論中著名的泊松分布。有一次閒暇時,他提出過乙個有趣的問題,後稱為 泊松分酒 在我國古代也提出過類似問題,遺憾的是沒有進行徹底探索,其中流傳較多是 韓信走馬分油 問題。有3個容器,容量分...