您的位置:首页 > 其它

HDU 1231 最大连续子序列

2012-01-18 18:29 260 查看
读清题意

#include<cstdio>
#include<cmath>
#include<iostream>
#include<conio.h>
using namespace std;
const int maxn=10001;

int tab[maxn];
int f[maxn];
int len[maxn];
int main()
{
//freopen("in.txt","r",stdin);
int n;
while(scanf("%d",&n)!=EOF){
if(!n)break;
for(int i=0;i<n;i++)scanf("%d",&tab[i]);
len[0]=1;
f[0]=tab[0];
for(int i=1;i<n;i++){
if(f[i-1]<0){f[i]=tab[i];len[i]=1;}
else {
f[i]=f[i-1]+tab[i];
len[i]=len[i-1]+1;
}
}
int maxv=f[n-1],pos=n-1;
for(int i=n-1;i>=0;i--){
if(maxv<=f[i]){
maxv=f[i];
pos=i;
}
}

//print out
if(maxv<0)printf("0 %d %d\n",tab[0],tab[n-1]);
else printf("%d %d %d\n",maxv,tab[pos-len[pos]+1],tab[pos]);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ini