zoukankan      html  css  js  c++  java
  • 01-复杂度1 最大子列和问题 (20分)分治

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,a[100000+5];
    
    int maxsum(int x,int y)
    {
        int m,L,R,v,i,maxs;
        if(y-x==1) return a[x];
        m=x+(y-x)/2;
        maxs=max(maxsum(x,m),maxsum(m,y));
        L=a[m-1];
        v=0;
        for(i=m-1;i>=x;i--)
            L=max(L,v+=a[i]);
        R=a[m];
        v=0;
        for(i=m;i<y;i++)
            R=max(R,v+=a[i]);
        return max(maxs,L+R);
    }
    int main()
    {
        int i;
        while(~scanf("%d",&n))
        {
            for(i=0;i<n;i++)
                scanf("%d",&a[i]);
            printf("%d
    ",maxsum(0,n));
        }
        return 0;
    }

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

  • 相关阅读:
    Java8新特性3 Stream
    注解
    Base64编码
    代理
    Cglib
    快照
    Java安全模式
    Hibernet缓存详解
    中文文档
    JDK1.8时间日期函数
  • 原文地址:https://www.cnblogs.com/xryz/p/4847803.html
Copyright © 2011-2022 走看看