永发信息网

用C/C语言写一个二维数组的迷宫,1代表墙,0代表通道

答案:1  悬赏:20  手机版
解决时间 2021-11-14 17:39
用C/C语言写一个二维数组的迷宫,1代表墙,0代表通道
最佳答案
如下,是完整代码
#include
#include

#define SIZE 9

void p();//打印迷宫
int pass(int x, int y);//走迷宫

int maze[SIZE][SIZE] =
{

{1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,1},
{1,0,1,1,0,1,1,0,1},
{1,0,1,0,0,1,0,0,1},
{1,0,1,0,1,0,1,0,1},
{1,0,0,0,0,0,1,0,1},
{1,1,0,1,1,0,1,1,1},
{1,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1}

};

int Inx = 1, Iny = 1;//设置入口
int Outx = SIZE - 2, Outy = SIZE - 2;//设置出口

int main(void)
{
p();
pass(Inx, Iny);

system("pause");
return 0;
}

void p(void)
{
int i, j;

for (i = 0; i < SIZE; i++)//循环打印输出迷宫
{
for (j = 0; j < SIZE; j++)//因为迷宫是一个二维平面图形,故使用双层for循环
{
//循环遍历迷宫数组中的每个元素,根据该元素得1值,打印不同的符号,从而组成迷宫
if (maze[i][j] == 1)//围墙
{
printf("▇");
}
else if (maze[i][j] == 0)//空地
{
printf(" ");//一个字符占位两字节,一个空格占位一字节,所以空地应输出两个空格
}
else//路
{
printf("☉");
}
}

printf("\n");//打印完一行后换行
}

}

int pass(int x, int y)//递归走迷宫,从初始位置开始,判断路的上下左右四个方向是否走的同(即判断是否为0),将下一个路的坐标作为参数递归调用pass()
{
maze[x][y] = -1;//初始位置为路

if (x == Outx && y == Outy)//如果路的位置已经走到了出口
{
//打印此次路线
printf("路线:\n");
p();
}

if (maze[x + 1][y] == 0)//如果目前已经走到的位置右方是路的话
{
pass(x + 1, y);//将下一步的坐标作为参数执行pass(),相当于往右走了一步
}
if (maze[x][y + 1] == 0)
{
pass(x, y + 1);
}
if (maze[x - 1][y] == 0)
{
pass(x - 1, y);
}
if (maze[x][y - 1] == 0)
{
pass(x, y - 1);
}

maze[x][y] = 0;//

return 0;
}追问您能帮我存储到链表里吗,并且走到死胡同的也要显示特殊的走过标记
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
飞信新版本里有“发送消息”和“飞信短信”有
带土为什么这么憎恨这个世界
平面束方程为什么不能表示4-12的方程。如图
为什么格美特门禁可以脱机使用
奔腾跟速龙;Intel 奔腾 G2020和AMD 速龙II X4
z384次列车座位排序
力士沐浴乳套装怎么用?两瓶1L的,一瓶350ml
什么森林的芬多精??
Win7系统设备管理器显示未知设备怎么更新安装
代销、经销有什么区别?
济南市凤栖第属于哪个街道办事处
2016固始事业单位考试成绩怎么通知我
C25的彩色透水混凝土多少钱一立方,用于路面
成都到青白江玫瑰庄坐几路公交
蒙古曾经攻占多少国家
推荐资讯
肉炒杂菌怎么做好吃
我使用一键装机从win8到win7怎么无法安装,现
什么热水器可以用瓶装煤气的
金凯驾校(武汉武昌区)地址有知道的么?有点事
贯诗钦UUU歌词
骶髂怎么念啊
辐射型和对流型两种散热器有哪些区别?
大叶速生按树什么时候开花?
卡纳尔奇电玩城地址在什么地方,我要处理点事
你这个人和你这种人,语气和意思有什么区别
降低人民币存款准备率1个百分点是什么意思
采蜜集(母爱)。怎么写。
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?