最大连续子序列和问题,本学期在算法课中已经学过。刚开始总只得了50分,查看输入数据发现n已经超过了100000,后将数组大小改为1000000没问题。此外,刚开始使用cin输入超时,改为scanf后通过。
题目描述
给定一个长度为n的序列,求该序列的最大的连续子序列和。
输入
第一行一个整数n。
第2行n个整数,表示该序列。
输出
一个整数,表示该序列的最大连续子序列和。
样例输入
10
2 5 -3 4 -9 -2 6 1 -8 7
样例输出
8
数据范围限制
1≤n≤100000,|序列每个元素|≤1000。(应为1<=n<=1000000)
#include <iostream>
#include <stdio.h>
using namespace std;
int a[1000000];
int main()
{
int n,i;
cin>>n;
cin>>a[0];
int b=a[0],s=0;
for(i=1;i<n;i++)
{
scanf("%d",&a[i]);
if(b>0)
b+=a[i];
else
b=a[i];
if(b>s)
s=b;
}
cout<<s<<endl;
return 0;
}