编程珍珠第8栏发现的问题如下:
给定实向量 x[n],计算在任何连续子向量中找到的最大和。
提供的最终解决方案具有 O(n) 复杂度,如下所示:
std::vector<int> x;
int max_so_far = 0;
int max_here = 0;
for (std::size_t i = 0; i < x.size(); ++i)
{
max_here = std::max(max_here + x[i], 0);
max_so_far = std::max(max_so_far, max_here);
}
我想知道如何修改上述算法以提供最小总和。