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

匿名用户

1级

2016-07-10 回答

如下,是完整代码

#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;

}

追问:

您能帮我存储到链表里吗,并且走到死胡同的也要显示特殊的走过标记

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值