迷宮問題:
如圖所示:從左上角出發,然後從下面出來。
利用檔案讀寫的方式,讀取迷宮,然後利用棧,進行搜尋是否能夠找到出口,上下左右四個方向進行判斷,如果找不到,就回溯。
#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...