//題型:狀態壓縮
//題意:以某一點為起點,問能否在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...