hdu1429勝利大逃亡 續 bfs 狀態壓縮

2022-04-13 17:33:40 字數 451 閱讀 7913

**

原先打算用乙個class裡面的set 儲存鑰匙,每次遇上門,就看當前結點的set有沒有對應的key

每次遇上鑰匙就將鑰匙插入的這個節點中,同時還要將父節點的鑰匙插入這個節點中,顯然這樣子很花費時間

於是考慮狀態壓縮,問題是怎麼壓縮?

比如怎麼用二進位制儲存鑰匙

當走到(xx,yy),時

首先明確鑰匙只有a~j而且不會重複,那我令

(1<<(s[xx][yy]-

'a')) 表示一種鑰

匙 如果加入新鑰匙 就 nowkey=father.key  |  (1<<(s[xx][yy]-

'a'))  

如果遇上門 就 通過 k=nowkey&(1<<(s[xx][yy]-

'a'))   

如果k==0 就是說沒有鑰匙能夠開啟這扇門

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

hdu 1429勝利大逃亡 續

題目 一開始想了好幾種方法。最後實驗都錯了。要麼是就是演算法思想錯誤。然後以為可以這樣。果斷。記憶體超出。下面是錯誤 include include includeusing namespace std define n 21 int n,m,t char map n n bool visited ...