Arrays 查找所有子阵列的最大值之和

Arrays 查找所有子阵列的最大值之和,arrays,subset,Arrays,Subset,问题是-找到所有子阵列中所有最大值的总和。例如,我有一个数组{2,8,4,3,5},解是92。我的所有子阵列都位于以下位置: {2} ,{8},{4},{3},{5} {2,8},{8,4},{4,3},{3,5} {2,8,4},{8,4,3},{4,3,5} {2,8,4,3},{8,4,3,5} {2,8,4,3,5} 所有子阵列的所有最大值为: 2-8-4-3-5- 8-8-4-5- 8-8-5- 8-8- 八, 你知道用线性时间复杂度解决这个问题的方法吗?应该很简单。请参见下面的算法

问题是-找到所有子阵列中所有最大值的总和。例如,我有一个数组{2,8,4,3,5},解是92。我的所有子阵列都位于以下位置:

{2} ,{8},{4},{3},{5}

{2,8},{8,4},{4,3},{3,5}

{2,8,4},{8,4,3},{4,3,5}

{2,8,4,3},{8,4,3,5}

{2,8,4,3,5}

所有子阵列的所有最大值为:

2-8-4-3-5-

8-8-4-5-

8-8-5-

8-8-

八,


你知道用线性时间复杂度解决这个问题的方法吗?

应该很简单。请参见下面的算法

sum = 0
max = 0
for every array 'arr' in the array of arrays
do
   for every element 'arri' in the array 'arr'
   do
      if arri >= max, max = arri
   end for
   max = 0
   sum = sum + max
end for

是的,我们知道。但你的企图是什么?任何一段代码你都在挣扎吗?问题是你是如何解决它的。好吧,我试着在n^2中解决这个问题,找到所有子数组并从每个子数组中获得最大值,但不幸的是,这里的关键是试着在线性时间内解决这个问题。对于给定的集合,我得到192。你是说192而不是92?无论如何,我不知道一个解决方案,但一种方法是归纳地看待这个问题。从一组1个元素开始,可以是最大的,也可以是最小的(我不知道哪种方法更有效),然后一次添加一个较小或较大的元素,直到您到达整个集合。我投票结束这个问题,因为StackOverflow不是HomeWorkSolutionFactory。OP没有提供他/她解决问题的尝试、他/她努力解决的实现或任何值得构建解决方案的想法。感谢您的回答,但不幸的是,我无法在n^2复杂度时间内解决此问题。我必须在线性时间内解决这个问题。这不是n^2复杂度。它只是n,但是从一个数组中获取所有子数组需要n,从每个子数组中获取值需要n,所以这是n^2。在您的代码中有两个用于,这表示您正在n^2中尝试此操作。