1089 簡單迷宮問題

2021-10-02 17:12:08 字數 978 閱讀 8042

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...