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

2021-06-26 21:30:01 字數 1307 閱讀 9747

路障

路障路障

路障路障

路障路障

入口

路障路障路障 路障

路障路障

路障路障路障路障

出口

路障路障

路障路障

路障路障

路障如上圖,,要求輸出迷宮的所有路徑,並求出最短路徑長度及最短路徑。。。。。。

入口座標設為(1,1),出口座標設為(4,4),,,親,,,接下來***。。。。。

#include

#define m 4 

//行數

#define n 4 

//列數

#define maxsize 

100 

//棧最多元素個數

int mg[m+2][n+2]=,

, ,, , };

struct migongstack[maxsize],path[maxsize]; 

//定義棧和存放最短路徑的陣列

int top=-1; 

//棧頂指標

int count=1; 

//路徑數計數

int minlen=maxsize; 

//最短路徑長度

void mgpath()

printf("\n");

if(top+1

//比較輸出最短路徑

for(k=0;k<=top;k++)

path[k]=stack[k];

minlen=top+1;

} mg[stack[top].i][stack[top].j]=0; 

//讓該位置變為其他路徑的可走結點

top--;

i=stack[top].i;j=stack[top].j;di=stack[top].di;

} find=0;

while(di<4 && find==0)

if(mg[i][j]==0)

find=1;

} if(find == 1)else

} printf("最短路徑如下:\n");

printf("長度:  %d\n",minlen);

printf("路徑:  ");

for(k=0;k

printf("(%d,%d)  ",path[k].i,path[k].j);

if((k+1)%5==0) 

//輸出時每5個結點換一行

printf("\n\t");

} printf("\n");

}int main()

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

目的 掌握棧在求解迷宮問題中的應用。內容 編寫乙個程式,輸出迷宮的所有路徑,並求第一條最短路徑長度及最短路徑。如下 include include include include using namespace std define inf 0x3f3f3f const int maxsize 10...

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

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 定義棧和...

兩點間最短路徑及所有路徑

private setnodes private map links private mapweights nodes用於儲存所有節點,不重複 links為鄰接表 weights為邊上的權值。1 兩點間最短路徑 dijkstra演算法 實現 為 public path shortestpath in...