用棧求解迷宮問題的所有路徑及最短路徑程式

2021-08-30 19:39:35 字數 1063 閱讀 5157

目的:掌握棧在求解迷宮問題中的應用。

內容:編寫乙個程式,輸出迷宮的所有路徑,並求第一條最短路徑長度及最短路徑。

**如下:

#include #include #include #include using namespace std;

#define inf 0x3f3f3f

const int maxsize=1000;

int m=4,n=4;

int mg[6][6]=,,

,,,};

int vis[6][6];

typedef struct

box;

typedef struct

sqstack;//順序棧型別

void initstack(sqstack *&s)//初始化棧

bool push(sqstack *&s,box e)//進棧

bool stackempty(sqstack *s)//判斷棧是否為空

bool pop(sqstack *&s,box &e)//出棧

bool gettop(sqstack *s,box &e)//取出棧頂元素

bool mgpath(int xi,int yi,int xe,int ye)

printf("迷宮路徑%d為:\n",cont++);

for(k=0;k<=st->top;k++)

printf("(%d,%d)\t",st->data[k].i,st->data[k].j);

printf("\n");

}_find=false;

while(di<4&&!_find)

if(vis[i1][j1]==0&&mg[i1][j1]==0) _find=true;

}if(_find)

else

}if(f==1)

return false;

}int main()

執行結果:

求解迷宮問題的所有路徑及最短路徑程式

路障 路障路障 路障路障 路障路障 入口 路障路障路障 路障 路障路障 路障路障路障路障 出口 路障路障 路障路障 路障路障 路障如上圖,要求輸出迷宮的所有路徑,並求出最短路徑長度及最短路徑。入口座標設為 1,1 出口座標設為 4,4 親,接下來 include define m 4 行數 defi...

用棧解決迷宮問題(輸出所有路徑和最短路徑)

include includeusing namespace std define m 4 行數 define n 4 列數 define maxsize 100 棧最多元素個數 int mg m 2 n 2 struct migong stack maxsize path maxsize 定義棧和...

非遞迴求解迷宮所有路徑問題遇到的BUG

不知道有沒有人和我一樣,在用棧求解迷宮問題所有可行解得時候,會遇到相同路徑重複輸出的bug。我看了網上問其他部落格的 發現也有這個bug,功夫不負有心人,花了1小時之久終於發現了bug!bug如下圖 上的路徑1,2重複了,路徑4,5重複了,除去重複路徑,真實的路徑只有4條。接下來展示排錯前的 也是出...