zoukankan      html  css  js  c++  java
  • 洛谷P1115最大子段和

    洛谷1115 最大子段和

    本题地址: http://www.luogu.org/problem/show?pid=1115

    题目描述
    给出一段序列,选出其中连续且非空的一段使得这段和最大。
    输入输出格式
    输入格式:
    输入文件maxsum1.in的第一行是一个正整数N,表示了序列的长度。
    第2行包含N个绝对值不大于10000的整数A[i],描述了这段序列。
    输出格式:
    输入文件maxsum1.out仅包括1个正整数,为最大的子段和是多少。

    输入输出样例
    输入样例#1:
    7
    2 -4 3 -1 2 -4 3
    输出样例#1:
    4

    说明
    【样例说明】2 -4 3 -1 2 -4 3
    【数据规模与约定】
    对于40%的数据,有N ≤ 2000。
    对于100%的数据,有N ≤ 200000。

    一看,这不是简单地递推嘛!
    从头线性扫一遍找最优即可
    但2次80分之后我仔细分析了一下, 如果全是负数,就会出现输出0的错误(当成不选)。
    于是加上特判就AC了

    #include<iostream>
    using namespace std;
    const int N=200005;
    int a[N];
    int main()
    {
        int n,i,ans=0;
        bool pd=false;
        cin>>n;
        for(i=1;i<=n;i++)
        {
            cin>>a[i];
            if(a[i]>0)
                pd=true;
        }
        if(pd==false)//特判,全是负数的情况
        {
            ans=a[1];
            for(i=2;i<=n;i++)
                if(a[i]>ans)
                    ans=a[i];
            cout<<ans;
            return 0;
        }
        for(i=1;i<=n;i++)//正常情况
        {
            a[i]+=max(0,a[i-1]);
            ans=max(ans,a[i]);
        }
        cout<<ans;
        return 0;
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    webrtc公开课
    webrtc第二篇 聊天室
    webrtc第一篇
    lua53
    setValuesForKeysWithDictionary forUndefinedKey
    xcode 插件
    2016年1月7日 隐藏NavigationBar时的一个坑
    jdbc
    brew gradle
    Openwrt TF Card Auto Mount&Check (4)
  • 原文地址:https://www.cnblogs.com/wuhu-xiaoshen/p/4918628.html
Copyright © 2011-2022 走看看