題目內容:
泊松是法國數學家、物理學家和力學家。他一生致力科學事業,成果頗多。有許多著名的公式定理以他的名字命名,比如概率論
中著名的泊松分布。 有一次閒暇時,他提出過乙個有趣的問題,後稱為:「泊松分酒」。在我國古代也提出過類似問題,遺憾
的是沒有進行徹底探索,其中流傳較多是:「韓信走馬分油」問題。 有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公升,…
當然,同乙個題目可能有多種不同的正確操作步驟。 本題目的要求是,請你編寫程式,由使用者輸入:各個容器的容量,開始的
狀態,和要求的目標油量,程式則通過計算輸出是否可能分成功-「y」,「n」。
例如,使用者輸入:
12,8,5,12,0,0,6
使用者輸入的前三個數是容器容量(由大到小),接下來三個數是三個容器開始時的油量配置,最後乙個數是要求得到的油量(放在
哪個容器裡得到都可以) 則程式可以輸出「y」
輸入描述
各個容器的容量,開始的狀態,和要求的目標油量
輸出描述
是否可能分成功-「y」,「n」
輸入樣例
12,8,5,12,0,0,6
輸出樣例
y靈機一現想到了前兩天學的a*啟發式搜尋,感覺解決這種問題非常完美, 只過了校oj也不知道水不水之後到原**上試試
#include#include#include#includeusing namespace std;
int r[3], n;
int a[3], p;
bool dfs(int v, int s, int pre)
} return false;
}int main()
while (++p) }
cout << "n" << endl;
}
韓信走馬分油
首先定義一套規則 題目中的瓶子總共有三種,最大的a,中等的b,最小的c,我們規定 最大的瓶子只能往中等的瓶子倒 若中等的瓶子為空 中等的瓶子只能往最小的瓶子倒 若最小的瓶子不滿 最小的瓶子只能往最大的瓶子倒 若最小的瓶子已滿 145.韓信走馬分油 15分 c時間限制 3000 毫秒 c記憶體限制 3...
啟發式搜尋
啟發式搜尋 heuristically search 又稱為有資訊搜尋 informed search 它是利用問題擁有的啟發資訊來引導搜尋,達到減少搜尋範圍 降低問題複雜度的目的,這種利用啟發資訊的搜尋過程稱為啟發式搜尋。例題 八數碼問題 運用優先佇列,根據目前已經確定的位置算出目前的價值,並匯入...
啟發式搜尋
啟發式搜尋 啟發式搜尋就是在狀態空間中的搜尋對每乙個搜尋的位置進行評估,得到最好的位置,再從這個位置進行搜尋直到目標。這樣可以省略大量無謂的搜尋路徑,提高了效率。在啟發式搜尋中,對位置的估價是十分重要的。採用了不同的估價可以有不同的效果。在啟發式搜尋中,我們每次找到當前 最有希望是最短路徑 的狀態進...