zoukankan      html  css  js  c++  java
  • MaxSubArray 最大子数列和

    1 public int maxSubArray(int[] A) {
    2            int newsum=A[0];
    3            int max=A[0];
    4            for(int i=1;i<A.length;i++){
    5                newsum=Math.max(newsum+A[i],A[i]);
    6                max= Math.max(max, newsum);
    7            }
    8            return max;
    9         }
     1 int maxSubArray(int *a, const int length) 
     2 { 
     3     int maxSumSubArray = 0; 
     4     int sum_i = 0;  
     5     for(int i=0; i <length; i++) 
     6     { 
     7        sum_i = sum_i + a[i]; 
     8        if(sum_i < 0) sum_i = 0; 
     9         else 
    10         { 
    11             if(sum_i > maxSumSubArray) maxSumSubArray = sum_i; 
    12         } 
    13     } 
    14  
    15     //若是数组中的元素均为负值 
    16     if(sum_i==0) 
    17     { 
    18         for(int i=0; i < length; i++) 
    19         { 
    20             if(a[i] > maxSumSubArray) maxSumSubArray = a[i]; 
    21         } 
    22     }    
    23     return maxSumSubArray;     
    24 } 

    还有一种是分治算法 自己写的 复杂度O(nlogn)

     1 #include<iostream>
     2 using namespace std;
     3 int MaxSubArray(int *A,int low,int high){
     4     if(low==high) return A[low];
     5     int mid=(low+high)/2;
     6     int maxl=MaxSubArray(A,low,mid);
     7     int maxr=MaxSubArray(A,mid+1,high);
     8     int maxleft=A[mid],maxright=A[mid+1],maxsum;
     9     maxsum=A[mid];
    10     if(mid-1>=low)
    11     for(int i=mid-1;i>=low;i--){
    12         maxsum=maxsum+A[i];
    13         maxleft=max(maxsum,maxleft);
    14     } 
    15     maxsum=A[mid+1];
    16     if(mid+2<=high)
    17     for(int i=mid+2;i<=high;i++){
    18         maxsum=maxsum+A[i];
    19         maxright=max(maxsum,maxright);
    20     } 
    21     int cross=maxleft+maxright;
    22     return max(cross,max(maxl,maxr));
    23     
    24 }
    25 int main(){
    26     int a[]={1,-4,1,3,-4,2};
    27     cout<<MaxSubArray(a,0,5)<<endl;
    28     return 0;
    29 }
  • 相关阅读:
    spring boot所有配置
    Hibernate validator的一些额外特性
    相似序列搜索
    时间序列异常检测
    基于结构的距离度量
    jupyterlab的启动404error问题
    爬虫-Chrome-问题1
    厘清重要概念的内涵与外延
    六)定时任务持久化
    公钥私钥
  • 原文地址:https://www.cnblogs.com/verlen11/p/4432902.html
Copyright © 2011-2022 走看看