DP
状态转移方程:sum[i] = max{sum[i-1]+a[i],a[i]}. (sum[i]记录以a[i]为子序列末端的最大连续和。
#include <cstdio>
#include <iostream>
#include <set>
#include <vector>
using namespace std;
int maxSubArray(vector<int>& nums)
{
int sum = nums[0];
int maxsum = nums[0];
for (int i=1;i<nums.size();++i)
{
if (sum + nums[i] > nums[i])
sum = sum + nums[i];
else
sum = nums[i];
if (sum >maxsum)
maxsum = sum;
}
return maxsum;
}
int main()
{
vector<int> a;
int x;
for(int i=0;i<2;i++)
{
cin>>x;
a.push_back(x);
}
/*int val;
cin>>val;
/*for ( int ix = 0; ix < a.size(); ++ix )
cout << a[ ix ] <<endl;*/
cout<<maxSubArray(a)<<endl;
return 0 ;
}