假設當前位置的初值為入口位置
do else
if(棧不空並且四周還能走)
}}while(棧不空)
**如下
#include
"consts.h"
typedef
struct
selemtype;
int top =-1
;selemtype q[
100]
;int map[10]
[10]=
;int foot[
200][2
]=;int l1 =-1
;int badfoot[
100][2
]=;int l2 =-1
;void
push
(selemtype* q, selemtype* e)
else
int xx, yy;
for(
int i =
0; i <= top; i++)}
void
pop(selemtype* q, selemtype* e)
else
}int
stackempty
(selemtype* q)
intpass
(int curpos)
}return1;
}void
footprint
(int curpos)
int*
nextpos
(int curpos,
int e)
else
if(e ==2)
else
if(e ==3)
else
if(e ==4)
else
return curpos;
}void
markprint
(int curpos)
intmain()
for(
int i =
0; i <
10; i++
)printf
("\n");
}int curpos[2]
=;//設定當前位置為起始位置
int curstep =1;
//探索第一步
doint x1 =
nextpos
(curpos,1)
[0];
int y1 =
nextpos
(curpos,1)
[1];
curpos[0]
= x1;
curpos[1]
= y1;
curstep++;}
else
if(e->di <4)
}}}while(!
stackempty
(q)&& win ==0)
;printf
("成功破解!\n破解路徑:");
int xx, yy;
for(
int i =
0; i <= top; i++
)printf
("\n破解過程走過的位置:");
for(
int j =
0; j <= l1; j++)}
}
補充:標頭檔案
#pragma once
#include
//eof(=^z或f6),null
#include
//malloc()等
#include
//int_max等
#include
#include
//atoi()
#include
//eof
#include
//floor(),ceil(),abs()*
#include
//exit()*
/*函式結果狀態***/
該演算法可以實現大部分迷宮的破解,演算法比較簡單,如果大佬有更簡單的演算法,歡迎私聊!
利用棧求解迷宮問題
利用棧求解迷宮問題 源 include include define m 8 define n 8 define maxsize m n typedef struct box typedef struct sttype int mg m 2 n 2 bool mgpath int xi,int yi...
利用棧解決迷宮問題
迷宮問題 如圖所示 從左上角出發,然後從下面出來。利用檔案讀寫的方式,讀取迷宮,然後利用棧,進行搜尋是否能夠找到出口,上下左右四個方向進行判斷,如果找不到,就回溯。pragma once pragma once include include define n 10 struct position ...
迷宮問題(棧)
迷宮問題 棧 棧 是一種簡單的資料結構,它的主要特點就是 先進後出 即就是先壓入棧中的資料需要最後出棧。相當於棧是乙個杯子,最先放進棧中的東西,只能夠最後拿出來。下面對 棧 的特點用圖形象的表示出來。這次所要討論的是基於棧的迷宮問題,當給定乙個迷宮,我們怎樣能夠找出迷宮中的通道呢?如果迷宮的規模比較...