假设我们有一个二维数组(N行,M列),其中每列至少有一个带有整数值的非空单元格:
我们可以轻松地组成一个新的单行,其中每个单元格包含数据数组中相应列的最大值。
解决方案(长度M)不能为空值。
在这种情况下,解决方案是:
有一个因素:每列的最大值。
我们想要添加另一个因素:构成解决方案的最低行数(比重要值更重要)。
最简单的算法如下:
i = 1
while (i <= M)
{
candidates = generateCorrectSolutionsFromAllNLengthRowCombinations(i)
if ( ! empty(candidates))
{
return biggestSumElement(candidates)
}
i++
}
该算法返回正确的解决方案,但具有非常高的计算复杂度,这对于更大的矩阵来说是个问题。
有没有办法更快地完成?这个问题(或类似问题)是否在任何地方进行过分
此致
Patryk
答案 0 :(得分:0)
如果您在无序数组中找到值,您永远不会知道,如果您要查找的值位于该数组的最后一个访问字段中,那么长度为N的数组的复杂度为O(N)且不能小于
如何使搜索更快的唯一方法是以某种方式排序数组,或者知道一些模式并基于跳过数组的某些部分,因为我们确定,解决方案不存在。