【发布时间】: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