4129 變換的迷宮(bfs)

2022-05-10 07:23:48 字數 2475 閱讀 9925

總時間限制: 

1000ms

記憶體限制: 

65536kb

描述你現在身處乙個r*c 的迷宮中,你的位置用"s" 表示,迷宮的出口用"e" 表示。

迷宮中有一些石頭,用"#" 表示,還有一些可以隨意走動的區域,用"." 表示。

初始時間為0 時,你站在地圖中標記為"s" 的位置上。你每移動一步(向上下左右方向移動)會花費乙個單位時間。你必須一直保持移動,不能停留在原地不走。

當前時間是k 的倍數時,迷宮中的石頭就會消失,此時你可以走到這些位置上。在其餘的時間裡,你不能走到石頭所在的位置。

求你從初始位置走到迷宮出口最少需要花費多少個單位時間。

如果無法走到出口,則輸出"oop!"。

輸入第一行是乙個正整數 t,表示有 t 組資料。

每組資料的第一行包含三個用空格分開的正整數,分別為 r、c、k。

接下來的 r 行中,每行包含了 c 個字元,分別可能是 "s"、"e"、"#" 或 "."。

其中,0 < t <= 20,0 < r, c <= 100,2 <= k <= 10。

輸出對於每組資料,如果能夠走到迷宮的出口,則輸出乙個正整數,表示最少需要花費的單位時間,否則輸出 "oop!"。

樣例輸入

1

6 6 2

...s..

...#..

.#....

...#..

...#..

..#e#.

樣例輸出

7

先貼個我的**,wrong了n次就是ac不了,崩潰了,大佬幫忙看看**的問題?

1 #include 2

using

namespace

std;34

struct

node

7node() {}8};

9char a[105][105

];10

intt,r,c,k;

11int visit[105][105][15

];12

int dr[4]=;

13int dc[4]=;

14node start,goal;

15 queue q;

1617

intmain()

29if(a[i][j]=='e'

) 33

for(int k=0; k) 36}

37}38while(!q.empty())q.pop();

39 visit[start.r][start.c][0]=1;40

q.push(start);

41while(!q.empty()) else 56

if(!visit[rr][cc][ss]&&ss==0

) 60

if(!visit[rr][cc][ss]&&ss!=0&&a[rr][cc]=='.'

) 64}65

} 66}

67if(q.empty())cout<<"

oop!

"<68hhh:;69}

7071

return0;

72 }

下面的**為什麼就可以通過呢?

1 #include 2

3using

namespace

std;45

intr, c, k;

6int visited[105][105][15];7

int mmap[105][105];8

intsx, sy, ex, ey;

9int dir1[4] = , dir2[4] = ;

10int flag = 0;11

12struct

node

16};

17 queueall;

1819

void

bfs()

34if (mmap[xx][yy]==1&&visited[xx][yy][tmptime] == 0||mmap[xx][yy]==2&&

35 visited[xx][yy][tmptime] == 0&&tmptime==0)36

40}41}

42}4344

intmain()

4565

else

if (ch == 'e'

) 69

else

70 mmap[i][j] = 2;71

}72node origin(sx,sy);

73all.push(origin);

74 visited[sx][sy][0] = 1;75

bfs();

76if (!flag)

77 printf("

oop!\n");

78}79return0;

80 }

11I 變換的迷宮(bfs迷宮問題)

總時間限制 1000ms 記憶體限制 10000kb 描述愛好探險的你,找到一座裝滿了寶藏的迷宮的入口,你看到入口的大門上有乙個邊長為s的正方形的大鎖,旁邊散落著n塊正方形的金屬小片,你意識到鎖的鑰匙,即是用這n小塊,拼成大門上的正方形,你想知道是否能拼成這把鑰匙開啟迷宮的大門。輸入輸入包含多組陣列...

迷宮問題bfs

迷宮問題 採用佇列的廣度優先遍歷 bfs 思想是從乙個頂點v0開始,輻射狀地優先遍歷其周圍較廣的區域 找到的解為最優解 include define m 8 define n 8 define maxsize 1000 typedef struct box typedef struct qutype...

迷宮問題BFS

the code 資料結構迷宮.cpp 定義控制台應用程式的入口點。include stdafx.h include include include include define n 4 定義迷宮為4 4 using namespace std struct pot 為記錄路徑的rec準備,座標 x...