迷宮求解(自動生成)

2021-10-07 07:08:30 字數 4658 閱讀 6355

主函式測試例項

// - - - - - 棧的順序儲存表示 - - - - -

#define stack_init_size 100

//儲存空間初始分配量

#define stackincerment 10

//儲存空間分配增量

typedef

bool status;

typedef

struct

sqstack;

// - - - - - 基本操作的函式原型說明 - - - - -

status initstack

(sqstack& s)

;//構造乙個空棧s

status destroystack

(sqstack& s)

;//銷毀棧s,s不再存在

status clearstack

(sqstack& s)

;//把s置為空棧

status stackempty

(sqstack s)

;//若棧s為空棧,則返回true,否則返回false

intstacklength

(sqstack s)

;//返回s的元素個數,即棧的長度

status push

(sqstack& s, selemtype e)

;//插入元素e為新的棧頂元素

status pop

(sqstack& s, selemtype& e)

;//若棧不空,刪除s的棧頂元素,用e返回其值,並返回true;否則返回false

// - - - - - 基本操作的演算法描述(部分) - - - - -

status initstack

(sqstack& s)

// initstack

status destroystack

(sqstack& s)

// destroystack

status clearstack

(sqstack& s)

s.top-

>ord = s.top-

>di = s.top-

>seat.x = s.top-

>seat.y =0;

s.base = s.top;

return

true;}

// clearstack

status stackempty

(sqstack s)

// stackempty

intstacklength

(sqstack s)

return i;

}status push

(sqstack& s, selemtype e)

*s.top = e;

s.top++

;return

true;}

// push

status pop

(sqstack& s, selemtype& e)

// pop

#define m 25

#define n 25

typedef

int*

* mazetype;

//定義迷宮型別為二維陣列指標

typedef

struct

postype;

//座標位置的元素型別

typedef

struct

selemtype;

//棧的元素型別

#include

"stack.h"

// - - - - - 基本操作的函式原型說明 - - - - -

status initmaze

(mazetype& maze)

;//初始化迷宮

status destroymaze

(mazetype& maze)

;//銷毀迷宮

status clearmaze

(mazetype& maze)

;//清空迷宮

status createmaze

(mazetype& maze,

int m,

int n)

;//隨機生成長m+1寬n+1的迷宮,0牆1路,迷宮邊界是牆

status printmaze

(mazetype maze,

int m,

int n)

;//列印迷宮, x代表牆,*代表路

status pass

(mazetype maze, postype p)

;//若當前位置p可以通過且未走過,maze[p.x][p.y]=1,則返回true;

//否則返回false

void

footprint

(mazetype& maze, postype p)

;//留下足跡,當前位置p已經走過,maze[p.x][p.y]=2

void

markprint

(mazetype& maze, postype p)

;//留下不能通過的標記,maze[p.x][p.y]=0

postype nextpos

(postype p,

int di)

;//返回當前位置p的下一位置,東di=1,南di=2,西di=3,北di=4

selemtype setcurselem

(int ord, postype seat,

int di)

;//返回對應序號ord座標seat及方向di的棧的元素

status mazepath

(sqstack& s, mazetype maze, postype start, postype end)

;//若迷宮maze存在從入口start到出口end的通道,則求得一條存放在棧中

//(從棧底到棧頂),並返回true;否則返回false

// - - - - - 基本操作的演算法描述 - - - - -

status initmaze

(mazetype& maze)

return

true;}

status destroymaze

(mazetype& maze)

status clearmaze

(mazetype& maze)

status createmaze

(mazetype& maze,

int m,

int n)

}return

false;}

status printmaze

(mazetype maze,

int m,

int n)

cout <<

'\n';;

}return

true;}

status pass

(mazetype maze, postype p)

void

footprint

(mazetype& maze, postype p)

void

markprint

(mazetype& maze, postype p)

postype nextpos

(postype p,

int di)

return p;

}selemtype setcurselem

(int ord, postype seat,

int di)

status mazepath

(sqstack& s, mazetype maze, postype start, postype end)

//if

else

//while

if(e.di <4)

//if

}//if

}//else

}while(!

stackempty

(s))

;return

false

;}

project3.2.4maze.cpp

#include

using

namespace std;

#include

"maze.h"

#include

intmain()

selemtype* p = s.base;

while

(p != s.top)

i++;if

(i %4==

0)cout <<

'\n'

; p++;}

cout <<

"\n輸出走過的迷宮\nx 牆和死路; * 沒有走的路; # 通路:\n"

簡單優化

迷宮自動生成程式

這學期開始時本來打算寫個自動生成迷宮的程式。但當時水平所限,寫不出來。假期這兩天把這個想法付諸實施,現在想想這個程式挺有意思的。程式和道理都非常簡單,有些類似於走迷宮。思路是這樣 1.首先假設迷宮場地是充滿牆壁沒有道路的。我們的工作其實就是把迷宮 挖 出來。不妨把開始時的迷宮看成一些小的 房間 每個...

C 自動生成迷宮遊戲

運用並查集自動生成迷宮地圖,並運用佇列和棧尋找迷宮通路並列印出來 incaighfalrtlude include include include include using namespace std using std queue using std stack typedef struct p...

AI 隨機迷宮 迷宮求解

本文記錄了,人工智慧中簡單的搜尋策略中的路徑搜尋策略中的a 演算法,來實現迷宮尋路的問題.這只是一次本人的課外作業 完整的程式原始碼已經傳送到我的git.這裡只記錄了我的思路和感想以及收穫.產生隨機迷宮 迷宮求解沒有迷宮怎麼可以呢.而本人是個懶人,每次都要手動輸入迷宮,重複性的工作讓我很不爽.你可以...