我知道,如果给出如下矩阵,这是一个老问题。
[1 1 2 3,
2 3 4 4,
3 4 1 3,
2 1 3 4]
从给定的位置开始,从右到左,只向右或向上或向下移动,不能以同样的方式返回并在右边停止,找到获得最大值的路径。
我正在考虑使用DP(可能需要尝试所有可能的路径并计算值),但它似乎会花费大量内存,因为它存储了所有可能的解决方案,也可能很慢。
我想知道是否还有其他想法或方法可以提供更好的解决方案?如果可能的话,更快的解决方案?
答案 0 :(得分:2)
如果您想优化内存,可以尝试回溯。这将涉及仅存储当前路径,以及最佳解决方案的路径和值。
大纲是:
答案 1 :(得分:2)
我认为有一种方法可以做DP,但我无法快速找到它。因为到目前为止没有人回答它我将给出一个图表方法。创建有向图,其中从A到B的边将等于该顶点中的数字。从您的描述中可以清楚地看出它不会有任何循环。您将获得这样的网格图,但仅指示:
现在获取一个位于右侧某处的顶点源并将其连接到第一层(将所有边等于0)。与目的地相同,但它在左侧。