知识点一:数组子区间的求和
定义数组sum[n]为前n项数之和,且数组下标从1开始,则数组子区间i~j可表示为sum[j]-sum[i]。
知识点二:动态规划
ac代码:
#include<iostream>
using namespace std;
int main()
{
int K,m=0,n=0;
cin>>K;
int a[10001],sum[10001],max=-1;
for(int i=1;i<K+1;i++)cin>>a[i];
sum[0]=0;
for(int i=1;i<K+1;i++)
{
sum[i]=sum[i-1]+a[i];
int j=i-1;
while(j--)
{
if(sum[i]-sum[j]>max)
{
max=sum[i]-sum[j];
m=a[i],n=a[j+1];
}
}
}
if(max<0)
cout<<'0'<<' '<<a[1]<<' '<<a[K];
else
cout<<max<<' '<<n<<' '<<m;
}