棧的迷宮求解 我使用來表白的

2021-09-28 16:48:47 字數 2918 閱讀 2808

#include #include #include #include /***************記憶體檢測區*********************/

#define _crtdbg_map_alloc    //*    這個是  相當於一種開關  開啟這個記憶體檢測的開關

#include //*

#include //*

#ifdef  _debug         //*

#ifndef dbg_new           //*

#define dbg_new new (_normal_block, __file__, __line__)//*

#define new dbg_new        //*

#endif               //*

#endif 

/***************巨集定義和型別轉換區*****************/

#define max_size 128

#define stack_s typedef

typedef struct point_c point;

#define elem_type point_c

#define width_x 15

#define lenth_y 10

using namespace std;

/***************結構體區*********************/

stack_s struct stack_s stack;

/************全域性變數**************/

int map[lenth_y][width_x],,,

,,,,

,,

};/***************函式定義區*********************/

bool isempty(stack& st);

bool isfull(stack& st);

// 1.初始化棧

bool initstack(stack& st);

// 2.入棧    e是要入棧的元素

bool pushstack(stack& st, elem_type e);

// 3.出棧   e是要出棧的元素

bool popstack(stack& st, elem_type& e);

// 4.銷毀棧

void destroystack(stack& st);

// 5.棧的遍歷

void printstack(stack& st);

// 6.棧的長度

int stacklen(stack& st);

/**************與迷宮相關的函式*****************/

bool isvalidstart(point& start);

// start 是入口  end 是出口  

void play(point& start, point& end, stack& st);

// 判斷下乙個 步時否符合要求

bool isvalidnext(point& next);

// 判斷終點是否有效

bool isvalidend(point& end, point& start);

// 定時器 函式

void lasttime();

/***************使用者介面區*********************/

int main(void) else

point start;    //迷宮的入口

start.x = 3;

start.y = 0;

point end;  ///用於儲存出口的座標

// 走出迷宮的實現

play(start, end, st);

printf_s("迷宮的出口為:end, x座標為:%d, y座標為:%d   \n", end.x, end.y);

// 遍歷地圖

for (int i = 0; i < lenth_y; i++)

return;

}int stacklen(stack& st)

bool isvalidstart(point& start)

else

return false;

}bool isvalidnext(point& next)

else

return false;

}bool isvalidend(point& end, point& start)

else

return false;

}void play(point& start, point& end, stack& st)

while ( !isempty(st) )

next = cur;

next.y -= 1;   //向上  

if (isvalidnext(next))

next = cur;        //上面的next的無效的話  在重新賦值

next.x -= 1;    //向左

if (isvalidnext(next))

next = cur;        //上面的next的無效的話  在重新賦值

next.y += 1;    //向下

if (isvalidnext(next))

next = cur;        //上面的next的無效的話  在重新賦值

next.x += 1;    //向右

if (isvalidnext(next))

point tmp;   //用於記錄 出棧的一點

popstack(st, tmp);

} return;

}void lasttime()

迷宮求解 棧的實現

一 題目及分析 二 思路 迷宮 迷宮的檔案儲存方式 三 include include define length 10 define width 10 define start hang 1 從0行開始計算row define start lie 1 從0列開始column define end ...

迷宮求解(棧的應用)

最近遇到了乙個較難的演算法題 迷宮求解,剛把棧與佇列學完,看完題面之後感覺有點想法,卻又一頭霧水。有些問題看著簡單但執行起來很難,而有些問題看上去很難但執行起來,更難。時間限制 1 sec 記憶體限制 128 mb 描述 有乙個 10 x 10 的迷宮,起點是 s 終點是 e 牆是 道路是空格。乙個...

棧的應用舉例 迷宮求解

迷宮求解思路 求出所有的從入口到出口的路徑 do否則切換當前位置的東鄰方向為新的當前位置進行探索 否則 否則 while 棧不空 include include sqstack.h using namespace std state x y 用來表明當前 x,y 位置的狀態是否為通過,1表示通道,0...