/*
*檔名稱: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...