棧 求解迷宮

2021-07-14 07:17:43 字數 880 閱讀 5823

/*

*檔名稱:main.cpp

*完成日期: 2016 年 7 月 1 日

*版本號:v1.0

*問題描述:編寫乙個求解迷宮問題

* */

#include #include #define maxsize 100

#define n 4 //列號

#define m 4 //行號

int mg[m+2][n+2]=,,,

,,};struct

stack[maxsize],path[maxsize]; //定義棧和存放最短路徑的陣列

int top=-1; //棧頂指標

int count=1; //路徑數計數

int minlen=maxsize; //最短路徑長度

void mgpath(int xi,int yi,int xe,int ye) //求解迷宮

printf("\n");

if(top+1執行結果:

學習心得:

基本思路:根據起點和終點,di設為前進的方向,在每乙個位置上有四個方位,上左下右。di值分別為0、1、2、3.走過的點在mg陣列標記為-1,為走過為0,牆為1.下乙個點狀態為0是為可行路線。當各個方位都不可行,出棧,top--,退到下乙個方塊,選擇另乙個方位進行嘗試。直到到達終點。輸出路線,記錄下top,並比較minlen,若為最短路徑存放人path中。

迷宮求解(棧)

這篇部落格是借鑑了always 的部落格修改得到了,感謝他的幫助。採用了以棧為基礎,在棧的基礎上進行迷宮的求解,用stack和maze兩個檔案來實現功能。stack.h的實現如下 pragma once include include include include typedef int dire...

棧求解迷宮問題

問題 假設下圖1是某迷宮的地圖 0代表路徑,1代表牆壁 問此迷宮是否有條通路?求解思想 用棧來實現解決問題,主要步驟是 1 將迷宮的入口座標設為當前座標 2 將當前座標壓棧,將當前座標上的值設為2 0變為2 代表已走過的路 3 判斷當前座標的四周 上下左右 是否是可以通 為0則通 的,如果是通的,那...

棧 求解迷宮問題

問題 在迷宮中尋找一條路徑 演算法分析 將迷宮數值化,使用二維陣列來表示迷宮,牆單元用0,通道單元用1 如果能夠通過繼續前進,如果不能通過則退回到上乙個單元,因此用棧來儲存通過的路徑 用0,1,2,3來分別表示4個方向 include pch.h include include include in...