题目描述
设数组A是一个有N个元素的整数数组,从中找出最大和的子序列. 输出最大子序列的开始与结束. 例如1, 序列:-53 -66 -15 -39 -62 -83 -79 -98 9 -44 输出: max:=9 from 9 to 9 例如2, 序列:3 -17 78 44 50 -53 13 80 95 -48 max:=307 from 3 to 9
输入
输入共两行,第一行一个整数N,表示有N个数。 第二行N个输入N个正负整数之间用空格隔开。
输出
输出两行,第一行为最大子序列的和. 第二行输出最大子序列的开始与结束.用空格隔开。
样例输入 复制
10 -53 -66 -15 -39 -62 -83 -79 -98 9 -44
样例输出 复制
9 9 9
数据范围限制
N<=200
代码:
#include<bits/stdc++.h>
using namespace std;
int a[10001],n,sum,s,t;
int main()
{
int max=-2100000000;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
sum=0;
for(int j=i;j<=n;j++)
{
sum+=a[j];
if(sum>max)
{
max=sum;
s=i;
t=j;
}
}
}
cout<<max<<endl<<s<<" "<<t;
}