//hdu 1231 最大连续子序列 (动态规划)
#include<iostream>
#include<cstdio>
using namespace std;
const int N=10010;
int s[N];
int n;
int sum;
int Max;
int ai,aj;
int flag=0;
void init()
{
Max=0;
sum=0;
flag=0;
}
//========主要算法================
void dp()
{
int di;
for(int i=0;i<n;i++)
{
if(sum>0)
{
flag=1;
sum+=s[i];
}
else
{
sum=s[i];
di=i;
}
if(sum>Max||(Max==0&&sum>=Max))
{
flag=1;
Max=sum;
ai=s[di];
aj=s[i];
}
}
if(flag==0)
{
ai=s[0];
aj=s[n-1];
}
}
//===================================
int main()
{
while(scanf("%d",&n)==1)
{
if(n==0) break;
int i;
for(i=0;i<n;i++)
{
scanf("%d",&s[i]);
}
init();
dp();
printf("%d %d %d\n",Max,ai,aj);
}
return 0;
}
//hdu 1231 最大连续子序列 (动态规划)
最新推荐文章于 2021-05-22 22:29:28 发布