一維陣列的最大子段和

2021-06-22 03:57:15 字數 423 閱讀 7518

public static int maxsubarray(int a, int n) 

return max;

}

解釋說明:

假設下標[m,n]這一段是最大值段,即b>sum,sum=b

①如果往後加,加的是負數,則b一直小於sum,則表示[m,n]這一段一直為最大值段,最大值sum不變

②如果加到後面某一值(下標p)時,b突然大於sum,則表示產生了新的最大值段[m,p],重新把b賦給sum

③如果加到後面某一值(下標q)時,b變成負的,則表示[m,q]這一段元素之和是負數,這一部分就不能用了,因為無論下個數是多少,相加後都會變小。所以把q位置的下乙個元素       賦給b,從這裡再重新開始計算。但最大值不變還是sum,最大值段也還是原來的[m,n]。

最大子段和以及最大子段和的推廣二維陣列(動態規劃)

一 最大子段和問題 問題定義 對於給定序列a1,a2,a3 an,尋找它的某個連續子段,使得其和最大。定義所有負數的最大欄位和是0,由此定義,所求的最優值是 max 1.最大欄位和問題的簡單方法 列舉的方法 實現 int summax1 int a,int n if thissum sum 用於更新...

一維陣列最大子陣列 一

題目 返回乙個整數陣列中最大子陣列的和。要求 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 思路 把每個和放在二維陣列中,找出最大數根據i和j的關係就找到最大陣列,不過時間複雜度是o n 2 ...

陣列的連續最大子段和

轉至 anker s blog 問題描述 輸入是乙個大小為n的整型陣列,要求輸出陣列的任何連續子陣列中的最大值。例如 輸入的陣列為array 10 輸出最大連續子陣列和為array 2.6 187 演算法1 對所有滿足0 i j n的 i,j 整數對進行迭代,對每個整數對,程式都要計算array i...