目的:掌握棧在求解迷宮問題中的應用。
內容:編寫乙個程式,輸出迷宮的所有路徑,並求第一條最短路徑長度及最短路徑。
**如下:
#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條。接下來展示排錯前的 也是出...