HDU——1231 最大连续子序列

题目链接:

想复杂了

#include<iostream>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
#define maxn 10010
int a[maxn];
int dp[maxn];
int main()
{
    int n;
    while(~scanf("%d",&n)&&n!=0)
    {
        int flag=0;
        int sum;
        int Max;
        int s,e,temp;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            if(a[i]>=0)
                flag=1;
        }
        if(flag==0)
        {
            printf("0 %d %d\n",a[0],a[n-1]);
            continue;
        }
        else
        {
            sum=Max=a[0];
            s=e=temp=0;
           for(int i=1;i<n;i++)
           {
               if(sum<0)
               {
                   temp=i;
                   sum=0;
               }
               sum+=a[i];
               if(sum>Max)
               {
                   Max=sum;
                   e=i;
                   s=temp;
               }
           }
        }
        printf("%d %d %d\n",Max,a[s],a[e]);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_42232118/article/details/82889646