【问题标题】:Understanding an algorithm that searches for a maximum-sum subsequence了解搜索最大和子序列的算法
【发布时间】:2014-10-17 17:14:15
【问题描述】:

我正在努力解决PE Problem #149 的算法。该算法已经完全编程,可以在here 找到。

在这个特定的算法中,我不明白为什么程序员要为 diagonal 2 方向和 anti-diagonal 2 方向编写代码。从编程的角度来看,这是必要的吗?我想不出任何数学原因!

为什么在 (1) 水平、(2) 垂直、(3) 对角线和 (4) 对角线方向上看是不够的?我们最终处理的是一个 nxn 矩阵(正方形)......

让我知道您对此的看法。正在等待作者的回复。

【问题讨论】:

    标签: algorithm matrix dynamic-programming


    【解决方案1】:

    是的,这只是一个实现细节。它仍然只看四个方向。这是必要的,因为对角线可以在最后一行和某列结束,也可以在最后一列和某行结束。

    【讨论】:

    • 这在 mxn 矩阵的情况下是必要的,但我们正在处理的是一个方阵,因此,您的最后一行/列总是相同的。出于这个原因,我不明白这种需要。我想错了吗?如果是这样,请给我一个小例子,我可以尝试推理。这让我发疯了。
    • @Hotnuto 假设矩阵是 [[1, 2], [3, 4]]。一个对角线结束于元素 3(最后一行,第一列),一个结束于元素 2(最后一列,第一行)。所以他们在这里是不同的组(我的意思是其中一个在最后一列结束,但不是在最后一行,反之亦然)。
    • 根据您的评论,我会得到: [[1 2*] [3* 4]] 和 [[1 2*] [3* 4]] 。其中 * 标记位于对角线组内部的元素。所以最后,结果是一样的,对吧? O_o
    猜你喜欢
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    相关资源
    最近更新 更多