迷宮問題(輸出路徑)

2021-07-09 14:48:19 字數 1534 閱讀 4251

迷宮問題

time limit:

1000

ms    

memory limit:

65536

kb    

64bit io format:

%i64d & %i64u

description

定義乙個二維陣列:

int maze[5][5] = ;

它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。

input

乙個5 × 5的二維陣列,表示乙個迷宮。資料保證有唯一解。

output

左上角到右下角的最短路徑,格式如樣例所示。

sample input

0 1 0 0 0

0 1 0 1 0

0 0 0 0 0

0 1 1 1 0

0 0 0 1 0

sample output

(0, 0)

(1, 0)

(2, 0)

(2, 1)

(2, 2)

(2, 3)

(2, 4)

(3, 4)

(4, 4)

思路:題意很簡單,關鍵是用怎樣的方式將路徑儲存下來,第一次接觸這種需要輸出路徑的題,參考了別人的方法。在結構體中用乙個變數來儲存當前狀態的上乙個狀態,採用模擬佇列來實現出隊和入隊,用遞迴的方式來輸出途徑。

**如下:

#include"cstdio"

#include"cstring"

#include"iostream"

#include"algorithm"

using namespace std;

int top,rear;

int maze[10][10];

int movex[4] = ; //x前進方式

int movey[4] = ; //y前進方式

struct node

node[100];

bool is_block(int x,int y) //判斷當前位置能不能走

if(maze[x][y])

return false;

}void output(int i) //遞迴輸出走過的座標

}void bfs(int x,int y)

if(is_block(xx,yy))

else

}top ++; //出隊

}}int main()

for(int i = 1;i < 5;i++)

}top = 0,rear = 1;

puts("(0, 0)");

bfs(0,0);

puts("(4, 4)");

}return 0;

}

迷宮輸出路徑

定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從起點到終點的最短路線。input m和n,表示乙個m n 的二維陣列,表示乙個迷宮。sx,sy,p,q分別表示起點和終點的座標資料保證有唯一解。outp...

OJ 4127 迷宮問題 遞迴輸出路徑

定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。輸入乙個5 5的二維陣列,表示乙個迷宮。資料保證有唯一解。輸出左上角到右下角的最短路徑,格式如樣例所示。樣例輸入0 1 0 0...

POJ3984 迷宮問題 簡單BFS 輸出路徑

迷宮問題 題意 在乙個5 5的迷宮中,數字0表示為可通過的路,數字1表示為不可通過的牆。問從左上角走到右下角的最短路線,並且輸出路徑。題目保證只有一組解,所以不用考慮字典序啥的 題解 據說,題目真的只有一組解,你只要複製樣例中的輸出然後提交就能過。雖然但是,還是要正兒八經做題的,輸出路徑最近常幹了,...