時間限制: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 4s.x.
a.x.
..xg
…. 3 4
s.xa
.axb
b.ag
0 0
yes調了乙個中午終於ac了不過**已經醜的我自己都看不下去了,和標程一比簡直都不能看人家的**又少執行效率又高,歸根結底還是思路的問題。所以說一道題目花一些時間思考找到乙個好的思路還是很重要的。先說我的思路吧,因為看到資料並不大(20*20最多也就四百)就想著純粹的把找鑰匙開門的過程模擬一遍,輸入的時候將各個鑰匙的數量記錄下來,先把能拿到的鑰匙拿完,如果有某個門可以開了就把這個門全變成路,因為地圖更新了嘛,然後再把上面的過程重複一遍,一直到拿不到鑰匙或者找到寶藏。說著就極其麻煩所以導致**同樣極其複雜。no
#include
#include
#include
#include
using
namespace
std;
char cha=;
char t[30][30];
int a,b,c,d,e;
int m,n,bj;
int vis[30][30]=;
int dir[4][2]=,,,};
struct zuobiaop,k;
queue
q;int gai() //判斷某種鑰匙是否已經全部到手,返回全部拿到的鑰匙編號
if(b==0)
if(c==0)
if(d==0)
if(e==0)
return -1;
}int pan(char ch)//判斷是否可以通過,路、鑰匙、寶藏都是可以通過
int key_jian(char ch)//判斷當前塊兒是否為鑰匙,是的話相應鑰匙數量-1,並返回真
void key(char ch)//輸入時儲存鑰匙數量
void bfs(int q_x,int q_y,int z_x,int z_y)//廣搜
for(int i=0;i<4;i++)}}
int linshi=gai();//判斷此次搜尋是否有能開的門
if(linshi>=0)}}
}int main()
if(t[i][j]=='g')
key(t[i][j]);
}for(int i=0;i<6&&bj==1;i++)
if(bj)
cout
<<"no"
0;}
#include
#include
#include
#include
using
namespace
std;
struct node
n1,n2;
int dx[4]=;
int dy[4]=;
int k[6];
int m,n;
int begin_x,begin_y;
char
map[25][25];
bool vis[25][25];
bool judge(int x,int y)
bool bfs()}}
for(int i=0;i<4;i++)}}
return
false;
}int main()
if(map[i][j]>='a'&&map[i][j]<='e') k[map[i][j]-'a']++;
}if(bfs()) printf("yes\n");
else
printf("no\n");
}return
0;}
附上測試資料5 5
e.b.s
xxa.e
gx.xc
c…x
***bx
5 5
e.b.s
xxa.e
gx.xc
c….
***bx
5 5
ecb.s
xax.e
gx.xc
ca…
***cx
5 5
xae.s
cxx.e
***xc
caa..
gxxcx
5 5
aee.s
cxx.e
***xc
caa..
gxxcx
5 5
aae.s
cxx.e
***xc
caae.
gxxcx
1 2
sg 1 3
sxg
5 5
sxaxg
.x.x.
.x.x.
.x.xa
…..
5 5
ae..s
bxx.c
xx.cx
gba.b
xxe.e
5 5
a…a
xx.xx
bxsxg
.xaxb
…..
5 5
.x.xg
sa..a
.b.xc
xx0
.b bc…
5 5
.x.xg
sb..b
.b.xc
xx..b
bc…
1 10
s.aabbcc.g
0 0答案
yes
yes
yes
no yes
yes
yes
no yes
yes
yes
yes
no yes
nyoj 82 迷宮尋寶(一)(廣搜)
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 乙個叫acm的尋寶者找到了乙個藏寶圖,它根據藏寶圖找到了乙個迷宮,這是乙個很特別的迷宮,迷宮裡有n個編過號的門 n 5 它們分別被編號為a,b,c,d,e.為了找到寶藏,acm必須開啟門,但是,開門之前必須在迷宮裡找到這個開啟這...
迷宮尋寶(一) 82 (廣搜)
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 乙個叫acm的尋寶者找到了乙個藏寶圖,它根據藏寶圖找到了乙個迷宮,這是乙個很特別的迷宮,迷宮裡有n個編過號的門 n 5 它們分別被編號為a,b,c,d,e.為了找到寶藏,acm必須開啟門,但是,開門之前必須在迷宮裡找到這個開啟這...
NYOJ 迷宮尋寶(一)
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述乙個叫acm的尋寶者找到了乙個藏寶圖,它根據藏寶圖找到了乙個迷宮,這是乙個很特別的迷宮,迷宮裡有n個編過號的門 n 5 它們分別被編號為a,b,c,d,e.為了找到寶藏,acm必須開啟門,但是,開門之前必須在迷宮裡找到這個開啟這個...