C++编写的迷宫问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 21:10:32
古老游戏,让老鼠走迷宫是一个经典的心理学实验。
用MXN数组表示迷宫。0表示可通过,1表示不通。
每一个位置上,课选择的又8个方向之一,每个方向有一个编号设当前位置为(i,j)则下一个位置应该在迷宫范围内,位置为(i+1,j+1)(k、l为-1,+1)的0值方程,为省去判别是否越界的负担,在迷宫外围加一圈元素,值均为1。对于MXN迷宫,使用的数组有(M+2)行(N+2)列,是是定入口为左上角元素,出口为右下角元素。走迷宫采用回溯技术,在每个有多出路的位置上采用约定的策略选择一个出路,如果尚未找到出口,遇到无进路的位置则应返回最近的一个分支点重新选择出路。
在每个位置上处理方法如下:若知当前位置已经是出口,则表示已经成功,否则计算当前出口数,已经走过位置应排除。将经过的位置值改为非0,若出口数字为1,iaoshi无选择,直接推经,若出口数大于1,镜当前信息送入数组中。
当前位置信息除行列号外还包括一个方向值,规定找出路时,总是从0方向开始顺时针进行在数组内保存了每个分支上已经选过方向的最大值,这样回溯时不必从0开始。

大家好,我是一个菜鸟,现在正在学习数据结构,希望大家指点我,我编写了一个走迷宫的程序,希望大家指点。源程序如下:(可以动态实现)

#include"time.h"
#include "stdio.h"
#include "graphics.h"
#include "conio.h"
#define null 0

int a[11][15]={ {1,0,1,1,1,0,0,1,1,1,0,0,0,0,0}, /定义迷宫,这是我们课程设计,所以就用老师给的了/
{0,1,1,1,0,0,1,0,0,0,0,1,1,0,0}, /0代表墙,1代表可以通行/
{1,0,0,1,1,1,1,0,0,0,0,0,1,0,0},
{0,0,1,0,0,0,0,1,0,0,0,1,0,1,1},
{0,0,1,0,1,1,0,1,0,0,0,0,0,0,0},
{1,1,0,0,1,0,0,0,1,0,1,1,0,0,0},
{1,0,0,0,0,1,1,0,0,0,0,0,0,0,0},
{1,1,0,0,1,0,0,1,0,0,0,0,0,1,0},
{0,0,1,1,1,0,0,1,0,0,1,1,1,1,1},
{1,1,0,0,0,0,0,1,1,1,0,0,0,0,1},
{1,0,1,1,0,0,0,0,0,1,0,0,0,0,1}
};
struct moving /定义走动方向/
{int x;
int y;
}move[9]={{0,0},{1,1},{0,1}