栈 求解迷宫

本文介绍了一种使用栈解决迷宫问题的方法。通过设置起点和终点,使用标记数组记录已走过和墙的位置,利用上左下右四个方向进行尝试。当所有方向都不可行时,栈顶元素出栈并尝试其他路径,直至找到终点。最终输出最短路径。
摘要由CSDN通过智能技术生成
 /*
 *Copyright (c) 2016, 烟台大学计算机学院
 *All rights reserved.
 *文件名称:main.cpp
 *作者:张旺华
 *完成日期: 2016 年 7 月 1 日
 *版本号:v1.0
 *问题描述:编写一个求解迷宫问题
 *
 */
#include <stdio.h>
#include <malloc.h>
#define MaxSize 100
#define N 4                 //列号
#define M 4                 //行号
int mg[M+2][N+2]={			//一个迷宫,其四周要加上均为1的外框
{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}
};
struct
{
    int i,j;
    int di;
}Stack[MaxSize],Path[MaxSize]; //定义栈和存放最短路径的数组
int top=-1;                     //栈顶指针
int count=1;                    //路径数计数
int minlen=MaxSize;             //最短路径长度
void mgpath(int xi,int yi,int xe,int ye)   //求解迷宫
{
    int i,j,di,find,k;
    top++;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值