描述
定義乙個二維陣列:
int maze[5]
[5]=
;
它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。
輸入乙個5 × 5的二維陣列,表示乙個迷宮。資料保證有唯一解。
輸出左上角到右下角的最短路徑,格式如樣例所示。
樣例輸入
010
0001
0100
0000
0111
0000
10
樣例輸出
(0,
0)(1
,0)(
2,0)
(2,1
)(2,
2)(2
,3)(
2,4)
(3,4
)(4,
4)
簡單的bfs,主要難點是儲存路徑,因此需要模擬佇列。
#include
#include
using
namespace std;
const
int n =
100;
int matrix[n]
[n];
//記錄迷宮
struct path
//無參建構函式
path
(int _r,
int _c,
int _f):r
(_r),c
(_c),f
(_f)
//有參建構函式};
bool vis[n]
[n]=
;//記錄點是否已經加入,每個點只能加入一次
int head =
0,tail =1;
//因為要儲存路徑,所以元素不能出列,因此要模擬佇列 。用頭尾兩個指標就好了。
int dis[4]
[2]=
,,,}
;//按四個方向拓展
path queue[n]
;//佇列
void
init()
//初始化
void
print_1
(int head)
//列印答案。先用陣列儲存,然後反向輸出
;int i =1;
ans[0]
= head;
while
(queue[head]
.f !=-1
)for
(int j = i-
1; j>=0;
--j)
printf
("(%d, %d)\n"
,queue[ans[j]
].r,queue[ans[j]
].c);}
void
print_2
(int head)
//遞迴輸出,看起來高大上了
void
bfs(
int x,
int y)
else}}
} head++
;//這裡要注意,每次頭指標都要後移}}
intmain()
問題 A 迷宮求解問題
時間限制 10 sec 記憶體限制 2048 mb 提交 574 解決 306 提交 狀態 討論版 用乙個m n的矩陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設計乙個程式,對給定的迷宮,求出找到的第一條從入口到出口的通路,或得到沒有通路的結論。我們指定 1 迷宮的入口為矩陣的左上角 1,1 迷宮...
迷宮問題求解(1) 簡單迷宮
標頭檔案 include include include include include maze.h define max 100 typedef struct position datatype typedef struct stack stack void stackinit stack s ...
迷宮問題1
c 語言程式設計練習1 程式設計練習 編寫程式尋找迷宮路徑。入口 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 出口x 圖1讀取迷宮檔案 如圖1所示 不限於此迷宮 以入口為開始 出口為終點 程式設計尋找一條穿越迷宮的路...