最大子段和问题。给定由n个整数组成的序列,求序列中子段的最大和,若所有整数均为负整数时定义最大子段和为0。
输入格式:
第一行输入整数个数n(1≤n≤1000),再依次输入n个整数。
输出格式:
输出最大子段和。
输入样例1:
5
-2 11 -4 13 -5 -2
输出样例1:
20
#include<iostream>
#include<vector>
using namespace std;
int maxSubArray(vector<int>& nums){
int cur_sum=nums[0];
int max_sum=nums[0];
for(int i=1;i<nums.size();++i)
{
cur_sum=max(nums[i],cur_sum+nums[i]);
max_sum=max(max_sum,cur_sum);
}
return max_sum;
}
int main()
{
int n;
cin>>n;
vector<int> nums(n);
for(int i=0;i<n;++i)
cin>>nums[i];
cout<<maxSubArray(nums)<<endl;
}