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]);
}
}
#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]);
}
}
相关文章推荐
- hdu 1231 最大连续子序列和( DP )
- hdu 1231 最大连续子序列(dp)
- hdu 1231 最大连续子序列(最大子段和)
- HDU 1231最大连续子序列
- 【HDU1231】最大连续子序列(简单动态规划)
- JAVA实践非完美·在线处理算法求最大连续子序列和并输出首尾
- 阿里笔试题:求两个子序列的最大连续子序列
- 最大连续子序列问题
- 返回连续子序列,使得和最大(变形)
- 关于最大连续子序列问题
- HDU__1003Max Sum(最大连续子序列和)
- 最大连续子序列和问题O(n)解法
- 连续子序列内各元素和的最大值
- hdu1231 最大连续子序列
- hdu 1231 最大连续子序列
- HDU Problem A [ 最大连续子序列和 ]——基础DP
- HDU 1231 最大连续子序列 &&HDU 1003Max Sum (区间dp问题)
- 最大连续子序列问题
- 最大连续子序列和
- 最大连续子序列和