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