勝利大逃亡 續 (簡單的深搜 狀態壓縮)

2021-09-10 21:29:40 字數 1090 閱讀 2470

ignatius再次被魔王抓走了(搞不懂他咋這麼討魔王喜歡)……

output

針對每組測試資料,如果可以成功逃亡,請輸出需要多少分鐘才能離開,如果不能則輸出-1。

sample input

4 5 17

@a.b.

a*..

…^c…b

4 5 16

@a.b.

a*..

…^c…b

sample output

16-1

**

#include#include#include#include#include#include#include#includeusing namespace std;

int n,m,t; //題目給定的 3個 變數

struct point

point()

};char maze[25][25]; //字元型陣列記錄位置的座標

bool vis[25][25][1<<11]; //1<<11是將有沒有鑰匙的狀態壓縮為乙個整型,因為電腦中資料為二進位制 ,01可以表示不同狀態

int dx[4]=;

int dy[4]=; //用 2個 數 組可以表示上下左右移動

int bfs(point start,point end)

else

if(maze[x][y]>='a'&&maze[x][y]<='j')}

else }

} }return -1;

}int main()

} point s,e;

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

if(maze[i][j]=='^')

} }int ans=bfs(s,e); //深搜

if(ans==-1||ans>=t) cout<<-1

}

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

是廣搜 狀態壓縮,狀態壓縮就是vis陣列加了乙個狀態表示這個狀態時來過沒,由二進位制01所代表的整數來表示,而狀態的表示由目前所擁有的鑰匙決定,這樣很容易就可以知道,遇到路就步數加一,狀態不變遇到鑰匙就改變狀態,遇到門就 一下看看有沒有鑰匙。自己要注意的是 想當然了,用了 include inclu...

B 勝利大逃亡 續 bfs,狀態壓縮)

ignatius再次被魔王抓走了 搞不懂他咋這麼討魔王喜歡 這次魔王汲取了上次的教訓,把ignatius關在乙個n m的地牢裡,並在地牢的某些地方安裝了帶鎖的門,鑰匙藏在地牢另外的某些地方。剛開始ignatius被關在 sx,sy 的位置,離開地牢的門在 ex,ey 的位置。ignatius每分鐘只...

勝利大逃亡 深搜加剪枝

ignatius被魔王抓走了,有一天魔王出差去了,這可是ignatius逃亡的好機會.魔王住在乙個城堡裡,城堡是乙個a b c的立方體,可以被表示成a個b c的矩陣,剛開始ignatius被關在 0,0,0 的位置,離開城堡的門在 a 1,b 1,c 1 的位置,現在知道魔王將在t分鐘後回到城堡,i...