Algorithm 求矩阵中三个总和最大的单元格
对于下面的问题,我有一个贪婪的解决方案。我想知道如何证明它 问题如下:给定一个由非负整数组成的nx2d矩阵,找出三个单元格,使这些单元格和相邻单元格的总和尽可能大。如果两个选定的单元格具有共同的相邻单元格,则相邻单元格仅参与一次求和,如果两个单元格共享一条共同边,则视为相邻 朴素的暴力解决方案在O(n6)中运行。我编写了一个贪婪的解决方案,它在O(n4)中运行。贪婪的解决方案使用了这样一种思想,即自身和相邻单元的总和最大的单元总是答案的一部分。我已经在几个测试用例上测试了这两种解决方案,结果是相同的 在贪心算法中,首先选择自身和相邻单元总和最大的单元,然后遍历所有可能的单元对Algorithm 求矩阵中三个总和最大的单元格,algorithm,matrix,brute-force,greedy,Algorithm,Matrix,Brute Force,Greedy,对于下面的问题,我有一个贪婪的解决方案。我想知道如何证明它 问题如下:给定一个由非负整数组成的nx2d矩阵,找出三个单元格,使这些单元格和相邻单元格的总和尽可能大。如果两个选定的单元格具有共同的相邻单元格,则相邻单元格仅参与一次求和,如果两个单元格共享一条共同边,则视为相邻 朴素的暴力解决方案在O(n6)中运行。我编写了一个贪婪的解决方案,它在O(n4)中运行。贪婪的解决方案使用了这样一种思想,即自身和相邻单元的总和最大的单元总是答案的一部分。我已经在几个测试用例上测试了这两种解决方案,结果是相
现在我的问题是,为什么这种贪婪的策略有效?我要证据。谢谢 它不起作用。对不起
20 1 40 1 40 1 20
20 2 40 3 40 2 20
20 1 40 1 40 1 20
1 1 20 20 20 1 1
1 1 20 2 20 1 1
1 1 20 20 20 1 1
3
自身和所有相邻单元的总和最高。然而,选择3个值为2
的单元格实际上是最好的
编辑
很明显你说的“相邻”和我的意思不同。因此,请尝试以下示例:
1 1 1 1 1 1 1
20 2 40 3 40 2 20
1 1 1 20 1 1 1
1 1 20 2 20 1 1
1 1 1 20 1 1 1
1 1 1 1 1 1 1
听起来你可以用大小相等的第二个矩阵来进一步抽象矩阵,其中单元格的值等于所有相邻单元格的总和。然后,从那里,你可以找到3个最大的卖点,它们彼此不相邻,不是吗?@fallereneaper no。有时候我们应该选择相邻的单元格。我想我把问题解释得很糟糕。我必须将“每个单元格只能参与一次求和”的语句编辑为“如果两个选定的单元格有共同的相邻单元格,则相邻单元格只能参与一次求和”。这更有意义。问题就变成了:你应该自己建立一个模型。我们可以想出答案,但我们不想无意中帮你做作业。@fallerenreaper这不是作业。不。挑两个会得到210。答案是329。选择单元格(2,3)、(2,5)和(5,4)将得到329。单元格(2,3)自身和所有相邻单元格的总和最高。@Chloe相邻是什么意思?我将其计算为“任意方向1”,这使其成为9个单元的块,“我可以更新示例,以使用不同的相邻单元定义来中断。