zoukankan      html  css  js  c++  java
  • 牛客在线编程_连续子数组最大和

    题目地址

    求最大子段和

    • 可以用贪心,dp和分治。
    • dp的做法其实和贪心一模一样...也不知道是不是dp。

    code1(贪心)

    #include <bits/stdc++.h>
    using namespace std;
    const int N=1e5+50;
    int n,a[N];
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        int ans=-0x3f3f3f3f;
        int p=0;
        for(int i=1;i<=n;i++){
            p+=a[i];
            ans=max(ans,p);
            if(p<0){
                p=0;
            }
        }
        printf("%d
    ",ans);
        return 0;
    }
    

    code2(分治)

    #include <bits/stdc++.h>
    using namespace std;
    const int N=1e5+50;
    int n,a[N];
    int sum(int l,int r){
        if(l==r){
            return a[l];
        }
        int mid=(l+r)/2;
        int lsum=sum(l,mid);
        int rsum=sum(mid+1,r);
        int ls=0;
        int rs=0;
        int tmp=0;
        for(int i=mid;i>=l;i--){
            tmp+=a[i];
            ls=max(ls,tmp);
        }
        tmp=0;
        for(int i=mid+1;i<=r;i++){
            tmp+=a[i];
            rs=max(rs,tmp);
        }
        int msum=ls+rs;
        return max(msum,max(lsum,rsum));
    }
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        printf("%d
    ",sum(1,n));
        return 0;
    }
    

    code3(动态规划)

    #include <bits/stdc++.h>
    using namespace std;
    const int N=1e5+50;
    int n,a[N],dp[N];
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        dp[1]=a[1];
        int ans=dp[1];
        for(int i=2;i<=n;i++){
            if(dp[i-1]>0){
                dp[i]=dp[i-1]+a[i];
            }else{
                dp[i]=a[i];
            }
            ans=max(ans,dp[i]);
        }
        printf("%d
    ",ans);
        return 0;
    }
    
  • 相关阅读:
    设计模式之-简单工厂模式
    C# 汉语转拼音
    深入理解DIP、IoC、DI以及IoC容器
    C# 各种帮助类大全
    C# TCP多线程服务器示例
    【AtCoder】AGC004
    【AtCoder】ARC061
    【AtCoder】CODE FESTIVAL 2016 qual A
    【AtCoder】AGC005
    【AtCoder】CODE FESTIVAL 2016 qual B
  • 原文地址:https://www.cnblogs.com/zxcoder/p/12231663.html
Copyright © 2011-2022 走看看