1007 Maximum Subsequence Sum

Posted fta-macro

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1007 Maximum Subsequence Sum相关的知识,希望对你有一定的参考价值。

一开始以为用前缀和做,看了下数据10000,果断放弃。

思考了一下,最大和序列的第一个数必为正数(废话),关键是从头开始的子序列和也必为正数。如果加到某个地方和为负数,我还要你前面这些数何用,不如从后面开始重新选。基于上述思路就可以写出代码了。

技术分享图片
#include <iostream>
#include <cstring>
#include <string>
#include <sstream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <vector>
#define maxn 10005
#define INF 0x3f3f3f3f
#define EPS 1e-6
#define pi acos(-1.0)
using namespace std;
typedef long long ll;
int n;
int a[maxn];

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    int flag;
    for(flag=1;flag<=n;flag++)
    {
        if(a[flag]>=0)
            break;
    }
    if(flag==n+1)
    {
        cout<<0<<" "<<a[1]<<" "<<a[n]<<endl;
        return 0;
    }
    int maxx=-1;
    int sum=0;
    int s,t,tmp=1;
    for(int i=1;i<=n;i++)
    {
        sum+=a[i];
        if(sum>maxx)
        {
            maxx=sum;
            s=tmp;
            t=i;
        }
        else if(sum<0)
        {
            sum=0;
            tmp=i+1;
        }
    }
    cout<<maxx<<" "<<a[s]<<" "<<a[t]<<endl;
    return 0;
}
View Code

 

以上是关于1007 Maximum Subsequence Sum的主要内容,如果未能解决你的问题,请参考以下文章

1007 Maximum Subsequence Sum(25 分)

1007 Maximum Subsequence Sum

1007. Maximum Subsequence Sum (25)

1007. Maximum Subsequence Sum (25)

1007. Maximum Subsequence Sum (25) 动态规划

1007 Maximum Subsequence Sum (25)(25 分)