HDU 1429 廣度優先搜尋 BFS

2021-06-13 16:14:00 字數 622 閱讀 9176

//題型:狀態壓縮

//題意:以某一點為起點,問能否在t時刻之前到達另一點,但是有些地方是需要拿到相應的鑰匙才能通過

//思路:將所有點出現過的狀態都儲存下來,而擁有鑰匙

的狀態用二進位制轉換成十進位制儲存

#include#include#include#include#include#include#include#include#include#includeusing namespace std;

const int inf=10000000;

char map[25][25];

int vis[25][25][1025];//各點的狀態儲存

int n,m,t;

int dx[4]=;

int dy[4]=;

struct nodest;

int bfs()

}else if(map[x][y]>='a'&&map[x][y]<='j')

}else }}

}return -1;

}int main()

}st.x=si,st.y=sj,st.time=0,st.nkey=0;

vis[si][sj][0]=1;

cout<

——

Hdu 1429(狀態壓縮)

有鑰匙和門的 bfs 狀態壓縮 乙個十把鑰匙和鎖,分別為a,b.j 當所用的步數小於 t即可。include include include includeusing namespace std int n,m,t,ans char map 21 21 int dir 4 2 int vis 21 ...

HDU1429 勝利大逃亡 續

學習位壓縮很好的一道題,因為只有10把鑰匙,那麼可以把10鑰匙壓縮二進位制,比如1000就表示身上只要第4把鑰匙的狀態,110表示帶有第2把和第3把鑰匙,那麼要判斷當前的鑰匙串有沒有能開啟當前門鑰匙,那麼就只要乙個 運算就可以,因為11101110 00100000 00100000 這樣就說明那一...

hdu 1429 勝利大逃亡 續

code include include using namespace std struct px struct px start char map 25 25 int mark 25 25 1025 dir 4 2 三維表,走過的路徑對應表的狀態 int wys 10 int n,m,t boo...