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