今天看到环状连续数组求子数组最大和的题目,看了几篇博客,但是好像有问题,可以举出反例。于是参考其他人的博客自己又总结下。
首先,求非环状的数组中子数组 最大和问题是一个动态规划的思想。
sum[i] = max(sum(i-1) + a[i], a[i]); sum[i]代表以i元素结尾的子数组的最大和,sum[i-1]代表以i-1元素结尾的子数组的最大和,a[i]代表第i个元素的值,由此公式...
分类:
编程语言 时间:
2015-08-06 00:36:43
阅读次数:
124
#include
#include
#include
using namespace std;
//求子数组的最小和
//利用的是dp的思想,依次遍历数组中的每个元素,把他们相加,如果加起来大于0,则
//把当前元素之和清为0,否则则和最小和比较,更新最小和,最后得到必是子数组的最小和
//时间复杂度:o(n) 空间复杂度:o(1)
int minSum(vector &num)
{
i...
分类:
编程语言 时间:
2015-04-27 10:03:18
阅读次数:
169