問題:
迷宮問題:求出從入口到出口的最短路徑。
設定乙個陣列mg表示迷宮,方塊為0表示對應方塊是通道,為1時表示對應方塊為牆:
//m=8,n=8
int mg[m+2][n+2]=,,,
,,,,
,,};c語言實現的乙個佇列的簡單應用,使用佇列尋找迷宮某兩個位置之間的最短路徑,
在程式執行時可以任意在迷宮中選擇起點和終點,查詢其最短路徑
mazepath.h
#ifndef mazepath_h_included
#define mazepath_h_included
#include #include #define maxsize 200
//定義佇列結構體
typedef struct
box;
//定義佇列型別
typedef struct
qutype;
//定義佇列變數
qutype qu;
//佇列初始化
void initqu(qutype* qu);
//佇列判空
int isempty(qutype qu);
//進隊
int enqu(qutype* qu,int i,int j,int pre);
//出隊
int dequ(qutype* qu,int* i,int* j);
//列印路徑
int print(qutype* qu,int qufront);
//尋找迷宮路徑
int mgpath(qutype qu,int xi,int yi,int xe,int ye);
#endif // mazepath_h_included
mazepath.c
#include #include #include "mazepath.h"
//編輯迷宮地圖,對此陣列進行修改即可改變迷宮形狀
int mg[10][10]=,,,
,,,,
,,};//佇列初始化
void initqu(qutype* qu)
//佇列判空
int isempty(qutype qu)
//進隊
int enqu(qutype* qu,int i,int j,int pre)
//出隊
int dequ(qutype* qu,int* i,int* j)
//列印路徑
int print(qutype* qu,int qufront)
while (k!=0);
printf("迷宮路徑如下:\n");
k=0;
while (k<=qufront) //正向搜尋到pre為-1的方塊,即構成正向的路徑
k++;
}printf("\n");
return 0;
}//尋找迷宮路徑
int mgpath(qutype qu,int xi,int yi,int xe,int ye)
for(di = 0;di < 4; di++ )
if(mg[i][j] == 0)}}
return 0;
}
main.c
#include #include #include "mazepath.h"
#include "mazepath.c"
int main()
printf("\n");
}initqu(&qu);
printf("\n請輸入起始點座標:");
scanf("%d%d",&i,&j);
printf("\n請輸入終點座標:");
scanf("%d%d",&x,&y);
mgpath(qu,i,j,x,y);
return 0;
}
迷宮最短路徑問題
問題描述 給定乙個迷宮和乙個起點乙個終點,求起點到終點的最短路徑長度。sample input 說明 5行5列的迷宮,為牆,為路,起點為 0,3 終點為 4,4 sample output 若不可達輸出 1 解答 用bfs的方法,借助乙個佇列實現。1 include2 include3 includ...
迷宮問題 最短路徑問題
給定乙個 n nn n 的二維陣列,如下所示 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。資料保證至少存在一條從左上角走到右下角的路徑。輸入格式 第一行包含整數 n。接下來 nn 行,每行...
迷宮最短路徑
include include using namespace std const int max n 100,max m 100 const int inf 100000000 使用pair表示狀態時,使用typedef會更加方便一些 typedef pairp 輸入 char maze max ...