Advertisement

研究C语言迷宫问题

阅读量:

题目描述

定义一个二维数组 N*M ,如 5 × 5 数组下所示:

int maze[5][5] = {
0, 1, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 1, 0,
};

它是一个迷宫示意图,在此图中1代表墙而0则代表可通行的道路。迷宫仅允许横向或纵向移动而不允许对角移动。任务是编写程序以确定从起点到终点的最佳路径,并将入口设置在坐标[0, 0]处

数据范围: 2≤n,m≤10 , 输入的内容只包含 0≤val≤1 。

输入

请接受两个整数值作为参数,并分别指定二维数组中行的数量与列的数量。随后,请提供一个二维数组,在该数组中数值为1的位置代表墙壁,在数值为0的位置允许通行。确保迷宫只有一条可行路径,并且不会出现多个解的情况

输出

左上角到右下角的最短路径,格式如样例所示。

输入:

5 5

0 1 0 0 0

0 1 1 1 0

0 0 0 0 0

0 1 1 1 0

0 0 0 1 0
输出:
(0,0) (1,0) (2,0) (2,1) (2,2) (2,3) (2,4) (3,4) (4,4)

解题思路

这道题的核心是利用递归算法来遍历所有可能的分支,在遇到无法继续推进的情况时会回溯到上一步,并最终找到通路并完成任务。

全部评论 (0)

还没有任何评论哟~