解題思路:
簡單的三維廣搜,把握好座標和陣列的關係。
用了輸入外掛程式,然後加了幾個小優化:
1.曼哈頓距離優化。
2.終點如果不能走,直接結束-1.
做了這題,對廣搜又有了一點認識。
1.首先廣搜是對每乙個點只搜尋一次,每次搜尋乙個點後就不再走。所以不需要像以前那樣判斷是否已經入隊。
2.搜尋時候要加上邊界,這樣就不用很多判斷了。(一般都是用0做邊界)
3.廣搜的佇列自己寫比較快,用陣列模擬一下就可以了。
4.廣搜的層數用乙個結構體來儲存,每次入隊時候,說明層數要在這個點的基礎上+1層。
**如下:
#include#include#include#include#includeusing namespace std;
const int n = 55;
const int dir[6][3] = , , , , , };
struct node
que[50000];
int maze[n][n][n];
int a, b, c, t;
int num;
int head, tail;
int scan()
res = ch - '0' ;
while( ( ch = getchar() ) >= '0' && ch <= '9' )
res = res * 10 + ( ch - '0' ) ;
return res ;
}int bfs()
} }return -1;
}int main()
if(maze[a][b][c] == 0 || num < a + b + c - 3) //終點無法走
printf("%d\n", bfs());
} return 0;
}
HDU 1253 勝利大逃亡(三維搜尋)
description ignatius被魔王抓走了,有一天魔王出差去了,這可是ignatius逃亡的好機會.魔王住在乙個城堡裡,城堡是乙個a b c的立方體,可以被表示成a個b c的矩陣,剛開始ignatius被關在 0,0,0 的位置,離開城堡的門在 a 1,b 1,c 1 的位置,現在知道魔王...
HDU 1253 勝利大逃亡(廣搜)
problem description ignatius被魔王抓走了,有一天魔王出差去了,這可是ignatius逃亡的好機會.魔王住在乙個城堡裡,城堡是乙個abc的立方體,可以被表示成a個b c的矩陣,剛開始ignatius被關在 0,0,0 的位置,離開城堡的門在 a 1,b 1,c 1 的位置,...
hdu 1253 勝利大逃亡(三維bfs 剪枝)
problem description ignatius被魔王抓走了,有一天魔王出差去了,這可是ignatius逃亡的好機會.魔王住在乙個城堡裡,城堡是乙個a b c的立方體,可以被表示成a個b c的矩陣,剛開始ignatius被關在 0,0,0 的位置,離開城堡的門在 a 1,b 1,c 1 的位...