農夫過河問題

2021-10-07 09:44:44 字數 1486 閱讀 7601

題目描述

有乙個農夫帶乙隻羊、一筐菜和乙隻狼過河。如果沒有農夫看管,則狼要吃羊,羊要吃菜。但是船很小,只夠農夫帶一樣東西過河。問農夫該如何解此難題?

我的**:

#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 南岸 我們怎麼判斷農夫在...