hdu1429 勝利大逃亡 續 (廣搜 狀態壓縮)

2021-07-05 20:56:03 字數 736 閱讀 6816

是廣搜+狀態壓縮,狀態壓縮就是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...