问题是学校的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数组中的元素,便可表示前进的路径。


2万+

被折叠的 条评论
为什么被折叠?



