给定一个M x N
矩阵和一个正整数p
,我怎样才能在位置0,0
开始的矩阵中递归地找到一个连续路径,该路径将总和为p
?您可以向左移动(col-1),向右移动(col + 1),向上移动(row-1)或向下移动(row + 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
答案 0 :(得分:1)
"应该随机移动"是(可能是故意的)误导。你想要做的是有效地深度优先搜索,系统地测试可能的路线。如果路线等于(您已完成)或超过目标号码,则会终止。在这种情况下,您会备份。
如果我们假设路线不能自行加倍(你没有说),那么可以使用的是左侧(或右侧)边缘模式,就像标准的迷宫求解器一样。因此,在每个访问的新节点上,它进入最左边的未访问的相邻节点,随后以顺时针方向尝试其他相邻节点。
(如果路径可以重新访问节点,则将矩阵视为4树并选择任意方向进行测试。)