hdu 1429 勝利大逃亡 續

2021-09-28 09:52:50 字數 1273 閱讀 5738

【l

ink】

: 【

desc

ript

ion】

給你乙個n*m的格仔;

裡面有鑰匙,以及鑰匙能開的門;

以及牆,以及起點,以及出口;

問你從起點出發,到出口的話,能不能在t時間內到;

【sol

utio

n】dis[x][y][sta]表示到了點(x,y)然後擁有鑰匙的狀態為sta的最短時間花費;

sta用10位的二進位制表示;

根據sta判斷能不能接著往下走,以及能不能開啟某一扇門;

以及獲取新的鑰匙

到了終點,就記錄f的最小值; 【n

umbe

rofw

a】 1

【rev

iw】

【code】

#include 

using

namespace

std;

const

int n = 20;

const

int dx[5] = ;

const

int dy[5] = ;

const

int inf = 0x3f3f3f3f;

struct node;

char s[n+5][n+5];

int a[n+5][n+5],n,m,t,sx,sy,tx,ty;

int dis[n+5][n+5][1024],two[12];

queue

dl;node temp;

bool bfs()

}if (a[tx][ty]>=11 && a[tx][ty]<=20)}}

}}

if (mi==inf) return

false;

if (mi>=t) return

false;

printf("%d\n",mi);

return

true;

}int main()

if (s[i][j]>='a' && s[i][j]<='z')

if (s[i][j]>='a' && s[i][j]<='z')

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

if (s[i][j]=='*')

if (s[i][j]=='.')

}if (!bfs()) puts("-1");

}return

0;}

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...

hdu 1429勝利大逃亡 續

題目 一開始想了好幾種方法。最後實驗都錯了。要麼是就是演算法思想錯誤。然後以為可以這樣。果斷。記憶體超出。下面是錯誤 include include includeusing namespace std define n 21 int n,m,t char map n n bool visited ...