查找其元素总和为矩阵中给定数字的路径
Finding a path whose elements sum up to a given number in a matrix
给定一个M x N
矩阵和一个正整数p
,我怎样才能从位置0,0
开始,以递归的方式通过矩阵找到一条连续路径,总和为p
?您可以向左移动 (col - 1(、向右移动 (col + 1(、向上移动(行 - 1(或向下移动(行 + 1(,并且只能在路径中使用一次位置。如果矩阵中有这样的路径,则将其输出到具有相同形状的单独矩阵中,方法是用 1 填充路径上的位置,用 0 填充其余位置。
我真的僵住了,可以做任何事情,有什么技巧可以解决这类问题吗?如何继续解决这个问题,解决方案将不胜感激。
下面是一个示例,其中p = 73
:
2 8 15
1 10 5
19 19 3
5 6 6
2 8 2
输出:
1 0 0
1 0 0
1 1 1
1 1 1
1 1 1
">
应该随机移动"(可能是故意的(具有误导性。 您要做的实际上是深度优先搜索,系统地测试可能的路线。 如果路由等于(您已完成(或超过目标数量,则路由将终止,在这种情况下,您将备份。
如果我们假设路线不能加倍(你没有说(,那么有效的是左(或右(边缘跟随模式,就像标准的迷宫求解器一样。 因此,在访问的每个新节点上,它继续到最左侧未访问的相邻节点,随后沿顺时针方向尝试其他相邻节点。
(如果路由可以重新访问节点,则将矩阵视为 4 树,并选择一个任意方向首先进行测试。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- 如何将更多文件夹添加到c++include路径
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- C++A*算法并不总是在路径中具有目标节点
- 找到两对数字,使它们的乘积的绝对差最小化
- 使用C++具有两个数字的最短路径算法.(C++)
- 计算路径根到节点的总和等于一定数字的数量
- 查找其元素总和为矩阵中给定数字的路径
- 如何将目录路径转换为唯一的数字标识符 (Linux/C++)
- 有数字的最短路径
- 将所有路径上的数字相乘,得到一个最小零数的数字
- 如何找到一个数字在两个方向上的最短路径
- 给定一个二叉搜索树和一个数字,找到一个路径,其节点的数据被添加为给定的数字。