怕**會有忽略所以全發了上來,麻煩各位
不知道為什麼,總是無法輸出尋得的路徑,用printf()檢測無法進入if (i == g_utexit.x && j == g_utexit.y )中
#include
#include
#include
#include
#include
#include
//匯入聲音標頭檔案
#include
#pragma comment(lib,"winmm.lib")
//匯入聲音標頭檔案庫
#define road 5
#define wall 4
#define begin 9
#define width 23
#define height 23
#define maxsize 100
#define max 100
const point g_utexit =
;typedef
struct
elemtype;
typedef
struct
stack;
//定義棧
intpop
(stack*
& p, elemtype& e)
//出棧
intpush
(stack*
& p, elemtype e)
//入棧
void
initstack
(stack*
& p)
//初始化
intdecide
(stack* t)
//判斷棧是否為空,若為空,返回1
void
destory
(stack*
& p)
intgettop
(stack* p, elemtype& e)
typedef
struct
move;
void
createmaze
(int x,
int y, byte*
* map)
//行數和列數都應該是偶數,最外一層是路,判斷其不為一,所以次一層保持為牆不變
;//打亂方向
int j, temp;
//temp 臨時變數
for(
int i =
0; i <
4; i++
) map[x]
[y]= road;
//把這個點賦值成路
for(
int i =
0; i <
4; i++)}
}void
draw()
void
responsemouse()
}else
if(m.x >=
330&& m.x <=
470&& m.y >=
165&& m.y <=
205)
}else
}closegraph()
;}intserachmroud
(byte*
* map)
int i, j, k =
0, v, i1, j1, l[max]
, t, u;
elemtype e, path[maxsize]
; stack* q;
initstack
(q);
e.x =
1; e.y =
1; e.d =-1
;//入口賦值
push
(q, e)
; map[1]
[1]=
-1;while
(decide
(q))
while
(k >0)
for(t =
0; t < width ; t++
)printf
("\n");
}destory
(q);
return1;
} v =0;
while
(d <4&&
!v)//尋路方向
if(i1 <
8&& i1>
0&& j1 >
0&& j1 <
8&& map[i1]
[j1]==5
)}if(v ==1)
else
}destory
(q);
return0;
}int
main()
srand((
unsigned
int)
time
(null))
;for
(int i =
0; i <= height +
1; i++
)//外面一圈為路
for(
int i =
0; i <= width +
1; i++
)createmaze(2
*(rand()
%(height /2)
+1),
2*(rand()
%(width /2)
+2), map)
;//1---height/2的隨機值 邊界
//出口
map[g_utexit.x +1]
[g_utexit.y +1]
= road;
for(
int i =
1; i <= height; i++
)printf
("\n");
}int m =
serachmroud
(map);if
(m =0)
printf
("迷宮無解");
printf
("繼續遊戲嗎?\n");
int w =
getchar()
;if(w ==89)
;else
if(w ==
78) again =0;
system
("cls");
}return0;
}
迷宮輸出路徑
定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從起點到終點的最短路線。input m和n,表示乙個m n 的二維陣列,表示乙個迷宮。sx,sy,p,q分別表示起點和終點的座標資料保證有唯一解。outp...
迷宮問題(輸出路徑)
迷宮問題 time limit 1000 ms memory limit 65536 kb 64bit io format i64d i64u description 定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求...
學霸的迷宮 BFS 路徑輸出
問題描述 學霸搶走了大家的作業,班長為了幫同學們找回作業,決定去找學霸決鬥。但學霸為了不要別人打擾,住在乙個城堡裡,城堡外面是乙個二維的格仔迷宮,要進城堡必須得先通過迷宮。因為班長還有妹子要陪,磨刀不誤砍柴功,他為了節約時間,從線人那裡搞到了迷宮的地圖,準備提前計算最短的路線。可是他現在正向妹子解釋...