PAT甲1007 Maximum Subsequence Sum (25)

#include <cstdio>
#include <cstdlib>
#include <map>
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <math.h>
#include <algorithm>
using namespace std;

struct node
{
    int start;
    int end;
    int sum;
}d[10010];

int n;

int main()
{
    scanf("%d",&n);
    int a[10010];
    int MaxN=-1;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    d[0].sum=a[0];
    d[0].start=0;
    if(d[0].sum>0)
    {
        MaxN=d[0].sum;
    }
    for(int i=1;i<n;i++)
    {
        if(d[i-1].sum<0)
        {
            d[i].sum=a[i];
            d[i].start=i;
        }
        else 
        {
            d[i].sum=d[i-1].sum+a[i];
            d[i].start=d[i-1].start;
        }
        if(d[i].sum>MaxN)
        {
            MaxN=d[i].sum;
        }
    }
    if(MaxN>=0)
    {
        for(int i=0;i<n;i++)
        {
            if(d[i].sum==MaxN)
            {
                printf("%d %d %d",d[i].sum,a[d[i].start],a[i]);
                break;
            }
        }
    }
    else
    {
        printf("0 %d %d",a[0],a[n-1]);
    }
    printf("\n");
    system("pause");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/yhy489275918/article/details/80369303