迷宮尋寶(一) BFS

2022-07-29 04:18:11 字數 2213 閱讀 9036

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:4

描述乙個叫acm的尋寶者找到了乙個藏寶圖,它根據藏寶圖找到了乙個迷宮,這是乙個很特別的迷宮,迷宮裡有n個編過號的門(n<=5),它們分別被編號為a,b,c,d,e.為了找到寶藏,acm必須開啟門,但是,開門之前必須在迷宮裡找到這個開啟這個門所需的所有鑰匙(每個門都至少有一把鑰匙),例如:現在a門有三把鑰匙,acm就必須找全三把鑰匙才能開啟a門。現在請你編寫乙個程式來告訴acm,他能不能順利的得到寶藏。

輸入輸入可能會有多組測試資料(不超過10組)。

每組測試資料的第一行包含了兩個整數m,n(1

輸出每行輸出乙個yes表示acm能找到寶藏,輸出no表示acm找不到寶藏。

樣例輸入

4 4 

s.x.

a.x.

..xg

....

3 4

s.xa

.axb

b.ag

0 0

樣例輸出

yes 

no

**

poj月賽改編

注意:1.門可能有多個

2.在搜尋的時候用been標記這個門是不是可以到達,用num==key&&key>0表示當前有足夠的鑰匙可以通過

3.讀入的時候有多餘空格,不要單個字元讀入

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;typedef unsigned

long

long

ull;

#define maxn 22

#define lll 1000000000

#define inf 1000000009

#define eps 0.00000001

/*bfs 搜尋,在讀入圖的時候記錄abcde所需要的鑰匙個數

先bfs一遍,找到所有能找到的鑰匙。

然後對於所有的門,如果第一次搜尋能到達而且鑰匙足夠。

把這個門加入佇列再搜

*/struct

node

};node start,aim;

vector

door[5

];int key[5], num[5], n, m;//

需要的鑰匙個數,n行m列

int x[4] = , y[4] = ;

bool

been[maxn][maxn];

char

g[maxn][maxn];

intcheck()}}

return -1;}

bool

bfs(node s)}}

return

false;}

intmain()

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

else

if (g[i][j] - '

a' >= 0 && g[i][j] - 'a'

< 5

)

else

if (g[i][j] == 's'

)

else

if (g[i][j] == 'g'

) }}

if(bfs(start))

while (1

)

door[k].erase(door[k].begin() +j);}}

if(f)

break

; }

if (!f)

printf(

"no\n");

else

printf(

"yes\n");

}return0;

}

迷宮尋寶(一) bfs

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述乙個叫acm的尋寶者找到了乙個藏寶圖,它根據藏寶圖找到了乙個迷宮,這是乙個很特別的迷宮,迷宮裡有n個編過號的門 n 5 它們分別被編號為a,b,c,d,e.為了找到寶藏,acm必須開啟門,但是,開門之前必須在迷宮裡找到這個開啟這個...

nyoj ACM 迷宮尋寶(一) bfs

迷宮尋寶 一 時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 乙個叫acm的尋寶者找到了乙個藏寶圖,它根據藏寶圖找到了乙個迷宮,這是乙個很特別的迷宮,迷宮裡有n個編過號的門 n 5 它們分別被編號為a,b,c,d,e.為了找到寶藏,acm必須開啟門,但是,開門之前必須在迷宮裡...

NYOJ82 迷宮尋寶(一) BFS

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 乙個叫acm的尋寶者找到了乙個藏寶圖,它根據藏寶圖找到了乙個迷宮,這是乙個很特別的迷宮,迷宮裡有n個編過號的門 n 5 它們分別被編號為a,b,c,d,e.為了找到寶藏,acm必須開啟門,但是,開門之前必須在迷宮裡找到這個開啟這...