推箱子 廣搜

2021-08-29 05:08:04 字數 1131 閱讀 3667

題目:

時限:1000ms 記憶體限制:10000k  總時限:3000ms

描述絕大多數人都玩過推箱子的遊戲,控制乙個人將箱子推動到目標位置即獲得勝利。現請你編寫乙個程式,判斷將箱子推到目標位置至少需要多少步。

輸入推箱子的平面區域為固定大小(10*10),使用10行10列輸入推箱子的初始局面。其中,0代表空格,1代表牆,2代表箱子,3代表目標位置,4代表人。

注:遊戲中只有乙個箱子,乙個目標位置,乙個人。

輸出輸出將箱子推到目標位置的最小步數;若箱子不可能被推到目標位置,輸出-1。

輸入樣例

0000000000

0000000300

0100000000

0100000000

0101111100

0000010000

0000010000

0020010040

0000010000

0000010000

輸出樣例

提示思路:

其實和原來的廣搜還是一樣的,就是人走的時候需要先找到箱子,找到箱子之後在去找目的地,結構體裡邊定義人和箱子的座標,這樣看起來整齊。箱子解釋見**

#include #include #include #include #include using namespace std;

const int maxn = 15;

struct man

;char maze[maxn][maxn];

int dir[4][2] = ;

bool hush[maxn][maxn][maxn][maxn];//用來判斷該位置是否訪問過

int bfs(man st)

hush[next.x][next.y][next.box_x][next.box_y] = 1;

man.push(next);}}

return -1;

}int main()

for(int i = 0;i < 10;i ++)

for(int j = 0;j < 10;j ++)

int step = bfs(st);

cout << step << endl;

return 0;

}

hdu 1254 推箱子 廣搜 深搜

注意以下幾點 1.箱子是否可走 2.人是否可達箱子後面 3.箱子的每個方向只走一次,而不是每個位置 廣搜箱子路徑,深搜人可否達箱子後面,記錄方向用visb 10 10 4 來記錄 include include include include include includeusing namespa...

hdu 1254 推箱子(兩次廣搜)

這題乙個下午了,現在終於過了 用了兩次廣搜,一次搜箱子到目標地,第二次搜人是可以到推動箱子的地方,要注意的是箱子可能會阻擋人,也可以來回的推。給幾組資料就知道了 這題資料都是後面討論版中提供的 4 30 0 0 0 0 1 0 2 3 1 4 1 5 50 3 0 0 0 1 0 1 4 0 0 0...

推箱子遊戲

大一寒假 1.寫 時我犯了乙個很大的錯誤 不然早就搞定了 把 與 混淆了 大忌啊 2.這裡實現了數位化編碼 3.上72 下80 左75 右77 4.特殊圖形可以到qq拼音符號裡獲取 include include include define x 1 人的位置 define y 5 define n...