#include "stdafx.h"
#include "iostream.h"
#include "string.h"
#include "stdio.h"
double dMeans=0,dWalkLen=10000;//dMeans 表示走出迷宫的方法,dWalkLen 表示当前走出
迷宫最少步数
char Maze[10][52]={
{"###################################################"},
{"% ## #### ### ### # ####"},
{"# ## # ### ### ###### ### ############ # # #"},
{"# ## ## ### ## ## # # ## # # ####"},
{"# # # ## ## ### # # ######### # # # ##"},
{"# # # # ## ########## #### ## # #"},
{"# ## ### ## ## ### #### ## ## # # ######### #"},
{"# # # ## ## # ## #### # # ## ####"},
{"#### ## #### #### ## # ### ## ## @"},
{"###################################################"},
}; //迷宫
int MazeFlag[10][51]; //迷宫的标志:0 表示未走过,i(i=1,2,3,4)表示已经走过了,i 表示方向。
int MazeMin[10][51]; //路径最小的迷宫的标志
void Walk(int nx,int ny);//走迷宫的函数,nx 是列,ny 是行
void PrintOut(); //打印路径及迷宫的函数,同时比较获取路径较短的行走方法
int Judge(int nx,int ny,int i);//判断在第 nx 列 ny 行向第 i 个方向走是否可以,可以返回 1 否则
返回 0。
//i=1 表示向右,2 表示向下,3 表示向左,4 表示向上
/*---------------------------------------------------------------------------------------------
//行走迷宫函数: void Walk (int nx,int ny)
//功能:判断是否已经走出迷宫,如果走出则打印路径,如果没有则开始逐个方向判断是
否可以行走,
// 如果都不能行走,或已经返回。则退出该位置,即将该位置的标志写为 0 表明未走过。
//无返回值,形参 nx 为当前位置的列,ny 为当前位置的行。
---------------------------------------------------------------------------------------------*/
void Walk(int nx,int ny)
{
if (Maze[nx][ny]=='@')//判断是否走出迷宫,@是迷宫出口标志
PrintOut(); //走出则打印出迷宫及行走路径
else //未走出迷宫
{
for (int i=1; i<=4; i++)//四个方向逐个行走,i=1 向右 2 向下 3 向左 4 向上
{
if (Judge(nx,ny,i)) //如果列为 nx 行为 ny 的位置向 i 方向是否可以行走