c语言迷宫问题纯数组解决

问题是学校的c语言实验作业,内容可能有很多不足的地方,希望大佬们能帮忙指出。

题目要求:

本关任务:迷宫问题。编程找出从入口(左上角方格)经过迷宫到达出口(右下角方格)的所有路径,迷宫问题示意如下方数字阵列所示,0所表示的地方是不可以通行的,只能从1走到与它相邻(四邻域:上、下、左、右相邻)的1上,且不能走重复路径。 迷宫问题示意图: 

1 0 0 0 0 0 0 0 0 0

1 0 1 1 0 1 1 1 1 0

1 1 1 0 0 1 1 0 1 0

1 0 0 1 1 1 0 0 1 0

1 1 1 1 0 1 1 1 1 0

0 0 0 0 0 0 0 0 1 1

本任务由键盘输入迷宫的行数和列数,以及迷宫的图案。

解题思路:

首先设置数组a存放迷宫,因为不能走重复路径,所以设置数组b标记已走过的路径;先将b中的元素全部初始化为0;

#define SIZE 100
int main()
{
	int m, n;
	scanf("%d%d", &m, &n);//输入迷宫的行和列
	int a[SIZE][SIZE];
	int i, j;
	for (i = 0; i < m; i++)//手动输入迷宫
	{
		for (j = 0; j < n; j++)
		{
			scanf("%d", &a[i][j]);
		}
	}
	int b[SIZE][SIZE] = { 0 };
	return 0;
}

 然后定义函数,函数判断当前所处位置的哪些方向是可以通行的并改变当前位置,同时将对应的b数组中的元素置为1,利用递归的思想,当没有前进到迷宫的出口时,反复调用该函数,当前进到迷宫出口,打印出b数组中的元素,便可表示前进的路径。


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值