hdu 5025 bfs 狀態壓縮

2021-06-28 17:18:32 字數 692 閱讀 1219

首先因為鑰匙是順序拿取的,所以記錄當前取到第幾把就可以

因為殺蛇是無序的,所以要用0/1二進位制數表示

然後寬搜就好了.......wrong了一天就是讀入問題,默默反省

#include #include #include #include #include #include #define max 107

using namespace std;

int n,m,ans;

char ch;

int mp[max][max];

int mark[max][max][11][68];

struct point

st,tmp;

int dx = ;

int dy = ;

void bfs ( )

for ( int i = 1 ; i <= 4 ; i++ )

{tmp.x = st.x + dx[i] , tmp.y = st.y + dy[i],

tmp.s = st.s , tmp.k = st.k , tmp.t = st.t+1;

int value = mp[tmp.x][tmp.y];

if ( value < 0 ) continue;

if ( value > m+2 )

{int j = value-m-3;

if ( !(tmp.s&(1<

hdu5025 bfs迷宮找最短路徑 模範題

題目大意 給定n n的網路,起點k,終點t,s表示蛇 最多5條,且經過s時,若蛇是活的則時間 1 數字代表鑰匙編號 最多m把且必須按照順序取 每次移動時間 1,求集齊所有鑰匙到達終點的最短時間 bfs迷宮搜尋。vis記錄狀態 行,列,蛇是否存活,鑰匙的集齊情況。每個狀態只被入隊一次。include ...

hdu 2209 BFS 狀態壓縮

這題bfs是比較簡單,但是就是在狀態壓縮和那個翻牌的操作就蛋疼了。開始的時候暴力。華麗麗的超時了。最後看了別人的思路,才恍然大悟。這題 因為翻牌是0變1,1變0,所以可以通過異或來實現,而每一位的翻牌操作,只需要事前把用來異或的數算出來儲存就行,如下 handle 1 3 handle length...

hdu4845 狀態壓縮BFS

題意 給乙個n m的矩陣,從11,走到nm,格仔和格仔之間可能有牆,也可能有門,有的格仔上面有鑰匙,相應的鑰匙開相應的們,撿鑰匙和開門都不需要時間,問你最少多少部能走到nm.思路 哎!一眼就看出來了是個狀態壓縮搜尋的水題,結果wa了將近兩個小時,就是因為忽略了乙個點可能有多把鑰匙,回來說下這個題,我...