hdu 1254 推箱子(兩次廣搜)

2021-06-20 09:56:07 字數 1076 閱讀 1151

這題乙個下午了,現在終於過了;

用了兩次廣搜,一次搜箱子到目標地,第二次搜人是可以到推動箱子的地方,要注意的是箱子可能會阻擋人,也可以來回的推。

給幾組資料就知道了(這題資料都是後面討論版中提供的)

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 0 0

1 0 2 0 0

0 0 0 0 0

4 41 2 1 1

0 0 0 0

0 4 3 0

0 0 0 0

4 40 3 0 0

0 0 2 0

0 0 4 0

0 1 0 1

3 30 3 0

1 0 2

0 4 0

5 50 1 4 0 0

0 1 1 1 1

0 2 3 0 0

0 0 0 0 0

0 0 0 0 0

4 40 1 0 1

0 2 0 4

0 0 0 0

0 3 0 1

#include#include#define n 8

using namespace std;

int n, m, str[n][n], mark[n][n], pmark[n][n], dir[4][2]=;

int s_x, s_y, e_x, e_y, p_x, p_y;

struct node

;int judge(int x, int y)

} }return -1;

}int bfs()

} }return 0;

}int main()

} memset(mark, 0, sizeof(mark));

int ans=bfs();

if(ans==0)

printf("-1\n");

else

printf("%d\n", ans);

} return 0;

}

hdu 1254 推箱子 廣搜 深搜

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

hdu 1254 推箱子遊戲

這個題目我就不說,鏈結在這裡 主要我想說的是,一開始是我用2個三圍陣列來分別標記人和箱子走過的四個方向,但不知怎麼回事行不通。於是就用乙個四維陣列來標記狀態,嘻嘻,過了。好吧,還是直接上 了。1 include2 include3 include4 5using namespace std 6int...

HDU 1254 推箱子(搜尋)

by cxlove 以前就做過的一題,重溫一下 推箱子遊戲,首先廣搜箱子的路徑,每一次移動都要判斷人是否能到達指定位置 bfs,dfs都行 我採用兩次bfs解決問題 在箱子的移動中,判重的時候需要乙個三維陣列,箱子從不同方向過來,人的位置是不一樣的,也就意味著狀態不一樣 id cxlove incl...