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