最大子陣列之和 優化動態規劃解

2021-07-29 00:07:37 字數 960 閱讀 3249

/**

* */

package dianer;

/**

* * @author lilylee

* @date 2023年3月19日

* @version

*問題描述:《程式設計師面試寶典》

*乙個有n個元素的陣列,這n個元素可以是正數也可以是負數,陣列中連續的乙個或多個元素可以組成乙個連續的子陣列。

*乙個陣列可能有多個這種連續的子陣列,

*求子陣列的和的最大值,並輸出起始位和終位。

*如輸入:

* *輸出

*max=15

*start=2,end=5

*//*

* 解析:《寶典》上提供了四種解法:

*一、暴力法:找出所有子陣列,求出子陣列的和,然後在所有子陣列的和取最大值。

*二、重複利用已經計算的子陣列之和:因為sum[i,j-1]已經計算過了,所以sum[i,j]=sum[i,j-1]+arr[j]

*三、動態規劃:arr[n-1]包含/不包含在最大子陣列中,或者單獨構成最大子陣列。

*四、優化動態規劃:只用end[i-1]和all[i-1]來實現。

* * */

/* * 本程式使用的是第四種,優化的動態規劃方法來解題。

* 不採用scanner了,直接在mian中定義了測試**,簡化一下**。

* */

public class maxsubarray ;

//int array=;

system.out.println("max="+maxsub(array));

system.out.println("begin="+begin+" , end="+end); }

public static int maxsub(int arr)

} return allsum;

}}

動態規劃 最大子陣列

解題思路 對於這樣乙個連續和的問題 個人習慣叫做最大連續和 如果我們要用動態規劃來解,首先得考慮狀態和狀態轉移方程。如果我們把題述陣列看成序列,那麼是不是可以用序列dp來考慮呢?我們不妨考慮乙個這樣的序列 1,3,5,2,4 a i 表示這個序列的第 i 個元素,dp i 表示最後乙個元素是a i ...

最大子陣列問題 動態規劃

昨天偶然上csdn,看到這個問題,學習了一種複雜度為o n 的演算法,可以計算array的最大子陣列問題。思路就是從0 length,將array累加起來,同時用乙個變數max記錄最大值,如果sum max,就更新max,如果sum 0 就令sum 0 為什麼是這樣呢,sum 0的話,前面的就可以直...

動態規劃之最大子陣列

問題 乙個有n個整數元素的一位陣列 a 0 a 1 a n 1 a n 這個陣列當然有很多子陣列,那麼陣列之和的最大值是什麼呢?public class maxchildarray int sum new int numbers.length sum 0 numbers 0 for int i 1 ...