趣味數(shù)學(xué)農(nóng)夫過河 農(nóng)夫過河問題?
農(nóng)夫過河問題?該項(xiàng)目旨在解決農(nóng)民過河的問題:農(nóng)民帶著一只狼、一只羊和一些蔬菜過河。河邊只有一艘船,農(nóng)民一次只能帶一件東西。沒有人的時(shí)候,狼會(huì)吃羊,羊會(huì)吃蔬菜。這個(gè)計(jì)劃將找出所有農(nóng)民過河的計(jì)劃。首先,我
農(nóng)夫過河問題?
該項(xiàng)目旨在解決農(nóng)民過河的問題:農(nóng)民帶著一只狼、一只羊和一些蔬菜過河。河邊只有一艘船,農(nóng)民一次只能帶一件東西。沒有人的時(shí)候,狼會(huì)吃羊,羊會(huì)吃蔬菜。這個(gè)計(jì)劃將找出所有農(nóng)民過河的計(jì)劃。首先,我們需要代表狼、羊、蔬菜和農(nóng)民的位置。四者的位置可分為兩種情況:一種是在當(dāng)?shù)劂y行,另一種是在對(duì)岸。我們使用0和1來表示這四個(gè)元素,所以我們使用一個(gè)包含四個(gè)元素的數(shù)組。為了記錄每一步,程序使用二維數(shù)組a[Max]ustep][4]并記錄每一步中四個(gè)人的位置。第一步是[0],第二步是[1]。。。[0][0]表示第一步是狼在本地銀行(0)或?qū)Π叮?),而[0][1]表示第一步是羊在本地銀行或?qū)Π?。。。為了記錄每個(gè)過河農(nóng)民的狀態(tài),使用了一個(gè)數(shù)組B[Max],數(shù)組中元素的值可以分別為-1、0、1、2,表示過河農(nóng)民空手,有狼、羊和蔬菜。第一步是狼、羊、蔬菜和農(nóng)民都在這個(gè)例子中,所以a[0][0]到a[0][3]都是0。它應(yīng)該已經(jīng)初始化,但a是一個(gè)全局變量,因此它會(huì)自動(dòng)初始化為0,因此此步驟保存在程序中。搜索是一個(gè)遞歸函數(shù),通過不斷的搜索可能下一步,找到解決方案,是一種深度優(yōu)先的搜索。A[Istep][0]A[Istep][1]A[Istep][2]A[Istep][3]==4,表示A[Istep][0]到A[Istep][3]在第二個(gè)Istep中都是1,表示四個(gè)都在另一邊。所以輸出結(jié)果。對(duì)于(I=0,I
如何通過編程來解決農(nóng)夫過河問題?
解如下:
1。農(nóng)夫帶著羊一個(gè)人回來了
2。農(nóng)夫帶著狼一個(gè)人回來了
3。農(nóng)夫拿著卷心菜一個(gè)人回來了
4。農(nóng)夫帶著羊安全地過了岸。節(jié)目沒時(shí)間了