pipi定義了乙個二維陣列:
int maze[5][5] = ;
它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,請找出從左上角到右下角的最短路線。
僅一組測試用例。
乙個5 × 5的二維陣列,表示乙個迷宮。資料保證有唯一解。
左上角到右下角的最短路徑,格式如樣例所示。
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
(0, 0)
(1, 0)
(2, 0)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(3, 4)
(4, 4)
思路:要記錄每個位置前乙個位置的值,bfs結束之後,從終點回溯到起點
#include
using
namespace std;
int maze[6]
[6];
bool vis[6]
[6];
int dir[
2]=;
struct node
;node pre[10]
[10];
bool
judge
(int x,
int y)
void
bfs(
int sx,
int sy)}}
}void
print
(node cur)
print
(pre[cur.x]
[cur.y]);
///從末尾的位置回溯到起點 逆序輸出
printf
("(%d, %d)\n"
,cur.x,cur.y);}
main()
簡單迷宮問題
首先是深搜 又叫回溯法。include int n,m,p,q,min 999999 p,q為 終點座標,m,n為迷宮行數和列數 int a 51 51 book 51 51 void dfs int x,int y,int step return 返回上一步 int i,tx,ty,next 4 ...
迷宮問題求解(1) 簡單迷宮
標頭檔案 include include include include include maze.h define max 100 typedef struct position datatype typedef struct stack stack void stackinit stack s ...
簡單的迷宮問題
給你乙個n m的迷宮,這個迷宮中有以下幾個標識 s代表起點 t代表終點 x代表障礙物 代表空地 現在你們涵哥想知道能不能從起點走到終點不碰到障礙物 只能上下左右進行移動,並且不能移動到已經移動過的點 輸入第一行乙個整數t 1 t 10 接下來有t組測試資料,對於每一組測試資料,第一行輸入2個數n和m...