題目描述
有乙個農夫帶乙隻羊、一筐菜和乙隻狼過河。如果沒有農夫看管,則狼要吃羊,羊要吃菜。但是船很小,只夠農夫帶一樣東西過河。問農夫該如何解此難題?
我的**:
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
struct statestate;
queue states;
bool is_used[16]
;state history[16]
;int
state_num
(state a)
bool
check_feasiblity
(state a)
}else
//人在河的對岸
}return
true;}
void
print_routine
(int state_num)
else
if(current_state.a[2]
==1&& last_state.a[2]
==0)else
if(current_state.a[3]
==1&& last_state.a[3]
==0)else
}else
else
if(current_state.a[2]
==0&& last_state.a[2]
==1)else
if(current_state.a[3]
==0&& last_state.a[3]
==1)else}}
}int
main()
states.
pop();
if(current_state.a[0]
==1)//人在河的本岸
current_state.a[0]
=1;for
(int i =
1; i <=
3; i++
) current_state.a[0]
=1; current_state.a[i]=1
;}}}
else
//人在河的對岸
current_state.a[0]
=0;for
(int i =
1; i <=
3; i++
) current_state.a[0]
=0; current_state.a[i]=0
;}}}
}return0;
}
注:
1.還沒有完全解決,現在只能輸出一種的
2.寫的太複雜了
心得:queue佇列的使用
農夫過河問題
問題 有一人帶著狼羊菜來到河的左岸欲乘乙隻小船過到右岸,每次人只能帶其中乙個過河 當有人在不會有事 當無人在時 就不允 許狼和羊在一起,也不允許羊和菜在一起,設計演算法以最少的次數過河?採用位向量,4個二進位制位的0 1情況表示狀態,顯而易見,共24 16種可能狀態。從高位到低位分別表示農夫 狼 白...
求解農夫過河問題
問題 乙個農夫帶著一匹狼 乙隻羊 一顆白菜要過河,只有一條船而且農夫每次最多只能帶乙個動物或物品過河,並且當農夫不在的時候狼會吃羊,羊會吃白菜,列出所有安全將所有動物和物品帶過河的方案。思路分析 顯然這不是乙個最優解的問題,最容易想到的方法就是遍歷了,設法用遍歷列舉出所有可能出現的情況,根據條件選取...
C 農夫過河問題
農夫過河問題 大家有沒有看過我的c學習中的位算,我們用8位二進位制的數字來表示任務的完成與否,1完成 0未完成 現在我們用4個二進位制數來代表 第一位表示農夫 1 北岸,0 南岸 第二位表示狼 1 北岸,0 南岸 第三位表示?1 北岸,0 南岸 第四位表示白菜 1 北岸,0 南岸 我們怎麼判斷農夫在...