目的:能将栈运用的更为熟练
实验内容:求解迷宫问题程序,要求输出如图所示的迷宫的路径,并求出第一条最短路径的长度以及最短路径。
设计的算法功能:
mgpath(int xi,int yi,int xe,int ye):求解迷宫问题,即输出从入口(xi,yi)到出口(ye,xe)的全部路径和最短路径(包含最短路径长度)。minlen记录最短路径长度,Path数组记录最短路径
dispapath():输出一条路径及其长度
dispminpath():输出第一条最短路径及其长度
具体程序:
#include
#define M 4 //行数
#define N 4 //列数
#define MaxSize 100 //栈最多元素
int mg[M+2][N+2] = {
{1,1,1,1,1,1},{1,0,0,0,1,1},{1,0,1,0,0,1},{1,0,0,0,1,1},{1,1,0,0,0,1},{1,1,1,1,1,1}
}; //用mg数组作为迷宫数组,定义迷宫的基本框架
struct
{
int i,j;
int di;
}St[MaxSize],Path[MaxSize],LenMax[MaxSize]; //定义栈和存放最短路径的数组
int top = -1; //栈顶指针
int count = 1; //路径数计数
int minlen = MaxSize; //最短路径长度
void dispapath() //输出一条路径并求最短路径