//開乙個四維陣列記錄牆和門的情況
//開乙個三維陣列標記在該位置時有哪些鑰匙
//鑰匙的記錄用狀態壓縮
//注意在同乙個位置可以有多把鑰匙,在這卡了乙個晚上。。。。。。。
#include
#include
#include
#include
using namespace std;
const int maxn = 60 ;
int vis[maxn][maxn][1<<11] ;
int wall[maxn][maxn][maxn][maxn] ;
int maze[maxn][maxn] ;
struct node
;int dx[4] = ;
int dy[4] = ;
int n ,m,p;
int bfs()
;vis[1][1][0] = 1;
que.push(first) ;
while(que.size())
}return -1;
}int main()
int s;
scanf("%d", &s) ;
int xi,yi;
for(int i = 1;i <= s;i++)
printf("%d\n",bfs()) ;}}
HDU 5094 題解(狀壓BFS)
maze 題目中文大意 這個故事發生在 星際迷航 的背景下。星際爭霸 的副隊長史波克落入克林貢的詭計中,被關押在他們的母親星球qo nos上。企業的上尉詹姆斯 t 柯克 james t.kirk 不得不乘宇宙飛船去救他的副手。幸運的是,他偷走了史波克所在的迷宮地圖。迷宮是乙個矩形,它有n行垂直和m列...
hdu5094 狀態壓縮dp dps
題目大意 給定乙個棋盤,要求從 1,1 走到 n,m 相鄰格仔之前可能是牆,門或者什麼都沒有,牆的話就無法通過,門的話就必須有對應的鑰匙才能通過,要求求出最少的步數,若無法到達就輸出1。除錯了近兩個小時,一直找不到錯在哪,後來看了別人的程式,發現忘記考慮1 1的棋盤了。真是嗶了狗了。題很簡單,就是對...
hdu 5094 Maze 狀態壓縮dp 廣搜
使用廣度優先搜尋,dp key x y 表示在擁有鑰匙key並在座標 x,y 時需要的最少的步數,key的二進位制的第i位等於1則代表擁有第i把鑰匙。需要注意以下幾點 1.可能存在同一座標有多把鑰匙。2.牆和門是在兩個座標間進行移動時的障礙,並不在座標點上,因此兩個方向的移動都要加入wall陣列。2...