【问题标题】:Maximum sum of non adjacent elements in a 2D array二维数组中非相邻元素的最大总和
【发布时间】:2017-03-12 07:38:28
【问题描述】:

我正在尝试寻找一种算法来帮助我找到二维数组中非相邻元素的最大总和。

对于一维数组,我从以下位置找到了有用的解决方案: 1)http://www.geeksforgeeks.org/maximum-sum-such-that-no-two-elements-are-adjacent/ 2)https://www.youtube.com/watch?v=UtGtF6nc35g

例如在一维数组中:{3, 2, 6, 2, 10} 我将得到最大和 19,因为 3、6 和 10 不相邻。

但是,我找不到可以帮助我处理 2D 数组的方法。如何在没有水平或垂直相邻元素的情况下找到该数组中整数的最大总和?允许对角相邻的元素。

例如:

[3, 2, 6, 2, 10]
[1, 5, 2, 5, 1]
[5, 1, 7, 2, 9]
[3, 9, 1, 8, 2]

有解决这个问题的现有算法吗?或者如果我使用另一种数据结构而不是二维数组,它会是另一种解决这个问题的方法吗?

【问题讨论】:

  • 你是四路邻接还是八路?
  • 抱歉没有指定,水平和垂直是不允许的,但是对角邻接是允许的。
  • 这是关于“如何”还是“如何以最佳的时间复杂度”?您需要最大值还是近似值就足够了?我们在谈论什么大小的二维数组?

标签: arrays algorithm time-complexity dynamic-programming


【解决方案1】:

问题可以表述为maximum-weight independent setmixed integer linear programming 问题。

要将其转换为最大权重独立集,请创建顶点为元素且边为邻接的图。

我不是整数规划方面的专家。有类似的(甚至更复杂)question,其中 sascha 演示了如何将问题转换为 MIP,以及求解器的强大功能。

【讨论】:

    猜你喜欢
    • 2019-10-26
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多