題目523 亡命逃竄

2021-08-09 02:47:12 字數 2629 閱讀 5333

從前有個叫hck的騎士,為了救我們美麗的公主,潛入魔王的老巢,夠英雄吧。不過英雄不是這麼好當的。這個可憐的娃被魔王抓住了,倍受折磨,生死一線。有一天魔王出去約會了,這可是乙個千載難逢的逃命機會。你現在的任務就是判斷一下這個英雄未遂的孩子能不能在魔王回來之前逃出魔王的城堡,成功逃生,最後迎娶我們美麗的公主。

魔王住在乙個城堡裡,城堡是乙個a*b*c的立方體,可以被表示成a個b*c的矩陣,剛開始hck被關在(0,0,0)的位置,離開城堡的門在(a-1,b-1,c-1)的位置,現在知道魔王將在t分鐘後回到城堡,hck每分鐘能從乙個座標走到相鄰的六個座標中的其中乙個.現在給你城堡的地圖,請你計算出hck能否在魔王回來前離開城堡(只要走到出口就算離開城堡,如果走到出口的時候魔王剛好回來也算逃亡成功),如果可以請輸出需要多少分鐘才能離開,如果不能則輸出-1.

如圖所示,輸入資料中的第0塊的最左上角是hck被關的地方,第a-1塊的最右下角是城堡的出口。按照圖中紅色箭頭方向移動每一層以構成整個城堡。

輸入資料的第一行是乙個正整數k,表明測試資料的數量. 每組測試資料的第一行是四個正整數a,b,c和t(1≤,c≤50,1≤t≤1000),它們分別代表城堡的大小和魔王回來的時間.

然後是a塊輸入資料(先是第0塊,然後是第1塊,第2塊……),每塊輸入資料有b行,每行有c個正整數,代表迷宮的布局,其中0代表路,1代表牆.

(如果對輸入描述不清楚,可以參考上面的迷宮描述,它表示的就是上圖中的迷宮)

對於每組測試資料,如果hck能夠在魔王回來前離開城堡,那麼請輸出他最少需要多少分鐘,否則輸出-1.

2 3 2 2 10

0 1

0 0

1 1

1 0

0 0

0 1

3 3 4 20

0 1 1 1

0 0 1 1

0 1 1 1

1 1 1 1

1 0 0 1

0 1 1 1

0 0 0 0

0 1 1 0

0 1 1 0

-1 11

求乙個狀態到另乙個狀態使用廣度優先演算法。只不過是二維的乙個擴充套件,輸入規模很大,剛開始寫的時候使用cin、cout超時,以為演算法的問題,後來將之改為scanf和printf即可。

廣度優先是從乙個始點開始搜尋,將其相鄰的點進佇列,然後搜尋佇列以此類推即可,退出條件是搜尋的路徑長度大於已給定的路徑長度或者搜尋的到了終點,或者所有點均已遍歷完。

/*

author:yanglinfeng

date:2017.10.09

nyoj(523):bfs

*/#include

#include

#include

#include

using

namespace

std;

intmap[55][55][55], visited[55][55][55], a, b, c, t;

struct node;

queue

q;node pre,curr;

//六個方向

int dir[6][3] = , , , , , };

//廣度搜尋

int bfs(node start)

; if (curr.steps > t)

return -1;

if (x == a - 1 && y == b - 1 && z == c - 1)

return curr.steps;

visited[x][y][z] = 1;

q.push(curr);}}

}return -1;

}int main()}}

node start = ;

int ans = bfs(start);

if (ans <= t)

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

else

printf("-1\n");

}return

0;}

#include

#include

#include

using

namespace

std;

int kj=,sx=,zy=;

intmap[60][60][60],ac[60][60][60];

int n,m,w,t;

struct hello

;void bfs()

; q.push(ok1);

ac[1][1][1]=1;

while(!q.empty())

for(a=0;a<6;a++)

;q.push(ok2);

ac[i][j][p]=1;}}

}if(sum<=t&&loop==1)

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

else

printf("-1\n");

}int main()

if(map[w][n][m]==0||w+n+m>t)

bfs();}}

NYOJ 523亡命逃竄(搜尋)

題目連線 簡單的搜尋。include include include include includeusing namespace std define clr arr,v memset arr,v,sizeof arr struct point mid struct point que 50000...

nyoj 523 亡命逃竄 BFS

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描寫敘述 從前有個叫hck的騎士,為了救我們漂亮的公主,潛入魔王的老巢,夠英雄吧。只是英雄不是這麼好當的。這個可憐的娃被魔王抓住了,倍受折磨,生死一線。有一天魔王出去約會了,這但是乙個千載難逢的逃命機會。你如今的任務就是推斷一下這個英...

NYOJ 亡命逃竄

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述從前有個叫hck的騎士,為了救我們美麗的公主,潛入魔王的老巢,夠英雄吧。不過英雄不是這麼好當的。這個可憐的娃被魔王抓住了,倍受折磨,生死一線。有一天魔王出去約會了,這可是乙個千載難逢的逃命機會。你現在的任務就是判斷一下這個英雄未遂...