利用棧解決迷宮問題

2021-07-11 04:05:23 字數 1538 閱讀 5293

迷宮問題:

如圖所示:從左上角出發,然後從下面出來。

利用檔案讀寫的方式,讀取迷宮,然後利用棧,進行搜尋是否能夠找到出口,上下左右四個方向進行判斷,如果找不到,就回溯。

#pragma once

#pragma once

#include#include#define n 10

struct position

};templatebool searchmazepath(int* a, int n, position entry, stack& paths)

//上position tmp = cur;//將cur這個點臨時記為tmp,用來做上下左右四個方向的測試

--tmp._row;//--row變為上一行

if (a[tmp._row*n + tmp._col] == 0)//如果為0,就說明是對的路徑

//下tmp = cur;

++tmp._row;//++row,變為下一行

if (a[tmp._row*n + tmp._col] == 0)

//左tmp = cur;

--tmp._col;

if (a[tmp._row*n + tmp._col] == 0)

//右tmp = cur;

++tmp._col;

if (a[tmp._row*n + tmp._col] == 0)

paths.pop();//如果四個方向都沒有符合的,就說明這條路不對,則應該pop這個點

//因為原來的點已經被改為數字2了,在沒有數字0,就應該pop

} return false;

}//讀取迷宮

void getmaze(int* a, int n)

else

} }}

void printmaze(int *a, int n)

cout << endl;//一行列印完換行

} cout << endl;

}void test()

; position ps(2, 0);//posotiom是乙個結構體,行和列會記錄位置,代表入口位置

getmaze((int*)array, n);//讀取迷宮

printmaze((int*)array, n);//列印迷宮

stackpaths; //用棧建立乙個paths,用來尋找路徑

searchmazepath((int*)array, n, ps, paths);

printmaze((int*)array, n);

}

#define _crt_secure_no_warnings 1

#includeusing namespace std;

#include"maze.h"

int main()

如有不正確的地方,希望能夠指出,一起學習進步,謝謝了。

利用棧求解迷宮問題

利用棧求解迷宮問題 源 include include define m 8 define n 8 define maxsize m n typedef struct box typedef struct sttype int mg m 2 n 2 bool mgpath int xi,int yi...

利用遞迴解決迷宮問題

利用遞迴解決迷宮問題 author rocco l public class migong for int i 0 i 8 i map 3 1 1 map 3 2 1 遍歷輸出地圖 for int i 0 i 8 i system.out.println 使用遞迴回溯給小球找路 setway map...

利用棧來破解迷宮問題

假設當前位置的初值為入口位置 do else if 棧不空並且四周還能走 while 棧不空 如下 include consts.h typedef struct selemtype int top 1 selemtype q 100 int map 10 10 int foot 200 2 int...