Time Limit: 1000ms
Memory Limit: 128M
Description:
给出一段序列,选出其中连续且非空的一段使得这段和最大。
Input:
第一行是一个正整数N(N <= 200000),表示了序列的长度。
第接下来的N行包含N个绝对值不大于10000的整数A[i],描述了这段序列。
Output:
仅包括1个整数,为最大的子段和是多少。子段的最小长度为1。
Sample Input:
7
2
-4
3
-1
2
-4
3
Sample Output:
4
Hint:
Sidney:对嘛
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n[200001],p,ans[200001]={0};
int sum=-9999999;//|x|<=10000 QWQ
cin>>p;
for(int i=1;i<=p;i++)
{
cin>>n[i];//输入
ans[i]=max(ans[i-1]+n[i],n[i]);//DP
sum=max(sum,ans[i]);//取最大值也同时进行,节约时间
}
cout<<sum;//直接输出
return 0;
}