欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

求最大子數(shù)組之和的方法解析(2種可選)

 更新時間:2016年12月23日 16:36:59   作者:一個弱者想變強(qiáng)  
本文主要對求最大子數(shù)組之和的方法進(jìn)行詳細(xì)解析,列了兩種方法供大家選擇借鑒,需要的朋友一起來看下吧

問題描述:一個有n個元素的數(shù)組,這n個元素可以是正數(shù)也可以是負(fù)數(shù),求最大子數(shù)組的和。

方法1:蠻力法

思路:最簡單也是最容易想到的方法就是找出所有子數(shù)組,然后求所有子數(shù)組的和,在所有子數(shù)組的和中取最大值。

/**
  * 方法1(蠻力法):兩次循環(huán)求最大子數(shù)組之和
  */
 public static int maxSubArray1(int[] a){
  int i,j;
  int ThisSum=0;
  int MaxSum=0;
  for (i = 0; i < a.length; i++) {
   ThisSum=a[i];
   for(j=i+1;j<a.length;j++){
    ThisSum+=a[j];
    if(ThisSum>MaxSum){
     MaxSum=ThisSum;
    }
   }
  }
  return MaxSum;
 }

方法2:優(yōu)化的動態(tài)規(guī)劃

思路:首先可以根據(jù)數(shù)組的最后一個元素a[n-1]與最大子數(shù)組的關(guān)系分為以下三種情況:

1) 最大子數(shù)組包含a[n-1],即以a[n-1]結(jié)尾。

2) a[n-1]單獨構(gòu)成最大子數(shù)組。

3) 最大子數(shù)組不包含a[n-1],那么求a[1,...,n-1]的最大子數(shù)組可以轉(zhuǎn)換為求a[1,...,n-2]的最大子數(shù)組。

通過上述分析可以得出如下結(jié)論:假設(shè)已經(jīng)計算出(a[0],...a[i-1])最大的一段數(shù)組和為All[i-1],同時也計算出(a[0],...a[i-1])中包含a[i-1]的最大的一段數(shù)組和為End[i-1],

則可以得出如下關(guān)系:All[i-1]=max{a[i-1],End[i-1],All[i-1]}。利用這個公式和動態(tài)規(guī)劃的思想解決問題。(代碼中還解決了起始位置,終止位置的問題)

/**
  * 方法2:優(yōu)化的動態(tài)規(guī)劃方法
  * nEnd就是通過“數(shù)組依次相加加到a[i],然后與a[i]做比較”得來的,保存較大的。因為如果前面的數(shù)加到a[i]
  * 還沒有a[i]本身大,那么前面的數(shù)也就對最大子數(shù)組和沒有貢獻(xiàn)。厲害
  * nAll就是記錄一下之前的新得到的nEnd和自身之前誰更大
  */
 public static int max(int m,int n){
  return m>n?m:n;
 }
 public static int maxSubArray2(int[] a){
  int nAll=a[0];//有n個數(shù)字?jǐn)?shù)組的最大子數(shù)組之和
  int nEnd=a[0];//有n個數(shù)字?jǐn)?shù)組包含最后一個元素的子數(shù)組的最大和
  for (int i = 1; i < a.length; i++) {
   nEnd=max(nEnd+a[i],a[i]);
   nAll=max(nEnd, nAll);
  }
  return nAll;
 }
 private static int begin=0;
 private static int end=0;
 /**
  * 求出最大子數(shù)組的開始begin,結(jié)尾end,以及整個子數(shù)組
  */
 public static int maxSubArray3(int[] a){
  int maxSum=Integer.MIN_VALUE;
  int nSum=0;
  int nStart=0;
  for (int i = 0; i < a.length; i++) {
   if(nSum<0){
    nSum=a[i];
    nStart=i;
   }
   else{
    nSum+=a[i];
   }
   if(nSum>maxSum){
    maxSum=nSum;
    begin=nStart;
    end=i;
   }
  }
  return maxSum;
 }

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • JSON反序列化Long變Integer或Double的問題及解決

    JSON反序列化Long變Integer或Double的問題及解決

    這篇文章主要介紹了JSON反序列化Long變Integer或Double的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java流程控制之循環(huán)結(jié)構(gòu)for,增強(qiáng)for循環(huán)

    Java流程控制之循環(huán)結(jié)構(gòu)for,增強(qiáng)for循環(huán)

    這篇文章主要介紹了Java流程控制之循環(huán)結(jié)構(gòu)for,增強(qiáng)for循環(huán),for循環(huán)是編程語言中一種循環(huán)語句,而循環(huán)語句由循環(huán)體及循環(huán)的判定條件兩部分組成,其表達(dá)式為:for(單次表達(dá)式;條件表達(dá)式;末尾循環(huán)體){中間循環(huán)體;},下面我們倆看看文章內(nèi)容的詳細(xì)介紹
    2021-12-12
  • javaweb如何使用華為云短信通知公共類調(diào)用

    javaweb如何使用華為云短信通知公共類調(diào)用

    這篇文章主要介紹了javaweb使用華為云短信通知公共類調(diào)用的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中的鍵盤事件處理及監(jiān)聽機(jī)制解析

    Java中的鍵盤事件處理及監(jiān)聽機(jī)制解析

    這篇文章主要介紹了Java中的鍵盤事件處理及監(jiān)聽機(jī)制解析,Java事件處理采用了委派事件模型,在這個模型中,當(dāng)事件發(fā)生時,產(chǎn)生事件的對象將事件信息傳遞給事件的監(jiān)聽者進(jìn)行處理,在Java中,事件源是產(chǎn)生事件的對象,比如窗口、按鈕等,需要的朋友可以參考下
    2023-10-10
  • JAVA中的for循環(huán)幾種使用方法講解

    JAVA中的for循環(huán)幾種使用方法講解

    這篇文章主要介紹了JAVA中的for循環(huán)幾種使用方法講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java中對list分頁并顯示數(shù)據(jù)到頁面實例代碼

    java中對list分頁并顯示數(shù)據(jù)到頁面實例代碼

    這篇文章主要介紹了java中對list分頁并顯示數(shù)據(jù)到頁面實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Mybatis實現(xiàn)增刪改查

    Mybatis實現(xiàn)增刪改查

    這篇文章主要介紹了Mybatis實現(xiàn)增刪改查,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-01-01
  • idea創(chuàng)建springboot項目,java版本只能選擇17和21的解決方案

    idea創(chuàng)建springboot項目,java版本只能選擇17和21的解決方案

    這篇文章主要介紹了idea創(chuàng)建springboot項目,java版本只能選擇17和21的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 如何使用Reactor完成類似Flink的操作

    如何使用Reactor完成類似Flink的操作

    這篇文章主要介紹了如何使用Reactor完成類似Flink的操作,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-03-03
  • 常見的java面試題

    常見的java面試題

    這篇文章主要為大家詳細(xì)介紹了常見的java面試題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11

最新評論