【问题标题】:Compose biggest-sum row solution from two dimensional array algorithm optimalization从二维数组算法优化组成最大和行解
【发布时间】:2016-03-03 12:06:16
【问题描述】:

假设我们有一个二维数组(N 行,M 列),其中每一列至少有一个整数值的非空单元格:

我们可以轻松地组成一个新的单行,其中每个单元格包含从数据数组中相应列中获取的最大值。

解(长度 M)不能有空值。

在这种情况下,解决方案是:

只有一个因素:每列的最大值。

我们想添加另一个因素:组成解决方案的行数最少(比总和值更重要)。

最简单的算法如下:

i = 1

while (i <= M)
{
    candidates = generateCorrectSolutionsFromAllNLengthRowCombinations(i)

    if ( ! empty(candidates))
    {
        return biggestSumElement(candidates)
    }

    i++
}

该算法返回正确的解决方案,但计算复杂度非常高,这对于更大的矩阵是有问题的。

有没有更快的方法?这个问题(或类似问题)是否在任何地方进行过分析?

问候,

帕特里克

【问题讨论】:

    标签: algorithm time-complexity combinations


    【解决方案1】:

    如果您在无序数组中查找值,您永远不知道,如果您要查找的值在该数组的最后访问字段中,因此长度为 N 的数组的复杂度为 O(N) 并且不能更小.

    加快搜索速度的唯一方法是以某种方式对数组进行排序,或者了解某种模式并在此基础上跳过数组的某些部分,因为我们确信,解决方案不存在。

    【讨论】:

      猜你喜欢
      • 2015-08-27
      • 1970-01-01
      • 2022-11-29
      • 2021-12-08
      • 2017-01-26
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      相关资源
      最近更新 更多