hdu5094Maze bfs 狀態壓縮

2021-06-29 10:07:14 字數 679 閱讀 6386

//開乙個四維陣列記錄牆和門的情況

//開乙個三維陣列標記在該位置時有哪些鑰匙

//鑰匙的記錄用狀態壓縮

//注意在同乙個位置可以有多把鑰匙,在這卡了乙個晚上。。。。。。。

#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...