是廣搜+狀態壓縮,狀態壓縮就是vis陣列加了乙個狀態表示這個狀態時來過沒,由二進位制01所代表的整數來表示,而狀態的表示由目前所擁有的鑰匙決定,這樣很容易就可以知道,遇到路就步數加一,狀態不變遇到鑰匙就改變狀態,遇到門就&一下看看有沒有鑰匙。自己要注意的是|=,想當然了,用了+=。
#include
#include
#include
#include ;
#include
using
namespace
std;
struct node
};int dir[4][2]= ,,,};
int vis[25][25][1
<<10];
char maze[25][25];
int n,m,t;
int sx,sy,ex,ey;
int bfs()
int xx,yy;
for(int i=0; i<4; i++)
if(maze[xx][yy]<='j'&&maze[xx][yy]>='a')
}if(maze[xx][yy]=='.')}}
}return -1;
}int main()
if(ch=='^')
maze[i][j]=ch;}}
printf("%d\n",bfs());
}return
0;}
hdu1429勝利大逃亡 續 廣搜
從今天開始刷搜尋 吼吼吼 這是很簡單的廣搜,書上的模板只適合於遞迴輸出orz,自己試著改也沒改明白t t 不過一大進步這段時間的刷題讓我徹底不怕stl了,哈哈哈,總是對於新語法的使用有一絲恐懼,多用用也就是那麼回事吧。題意 文字不解釋 然而鑰匙這個問題嘛,下面的 處理的相當巧妙 mark 行 列 字...
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...