/**
* */
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 ...