利用棧來破解迷宮問題

2021-10-10 01:14:45 字數 2340 閱讀 9595

假設當前位置的初值為入口位置

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 ...

迷宮問題(棧)

迷宮問題 棧 棧 是一種簡單的資料結構,它的主要特點就是 先進後出 即就是先壓入棧中的資料需要最後出棧。相當於棧是乙個杯子,最先放進棧中的東西,只能夠最後拿出來。下面對 棧 的特點用圖形象的表示出來。這次所要討論的是基於棧的迷宮問題,當給定乙個迷宮,我們怎樣能夠找出迷宮中的通道呢?如果迷宮的規模比較...