最大子段和問題

2021-09-25 10:46:14 字數 753 閱讀 7876

問題描述:

給定n個整數(可能為負數)組成的序列a[1],a[2],a[3],...,a[n],求該序列如:

a[i]+a[i+1]+..+a[j]。當所給的整數均為負數時定義子段和為0.如果序列中全部是負數則 

最大子段和為0,依次所定義:所求的最優值max,1<=i問題解析(動態規劃演算法):

dp[i]:包含元素i的子段和

dp[0]:0

dp[1]:arr[1] + dp[0] = 11

dp[2]:11 + dp[1] = 7

dp[3]:7 + dp[2] = 20

dp[4]:20 + dp[3] = 15

dp[5]:15 + dp[4] = 13

例如(-2,11,-4,13,-5,2)的最大子段和為20,所求子區間為[2,4].

如果該序列的所有元素都是負整數時定義其最大子段和為0。

**示例:

public class maxchar;

int dp = new int[arr.length];

dp[0] = arr[0];

if(arr[0] < 0)

int max = dp[0];

for(int i = 1;i <= arr.length;i++)

}system.out.println(arrays.tostring(dp));

system.out.println(max);

}}

最大子段和問題

給定n個整數 可能為負數 組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的子段和的最大值。當所給的整均為負數時定義子段和為0 分治法 分析 首先將陣列分為兩部分,最大子段和 可以在陣列的左半部分也可以在右半部分,也可以橫跨分割點,因此我們只需要用分治思想求出左邊最大...

最大子段和問題

給定n 個整數 有可能是負數 組成的序列,要求分別用蠻力法,減治法和動態規劃法,求最該序列的最大子段和,並對它們的效率進行比較分析。也稱窮舉法或列舉法,是一種簡單直接地解決問題的方法,常常基於問題的描述,所以,蠻力法也是最容易應用的方法。它依賴的基本技術是遍歷,採用一定的策略依次處理待求解問題的所有...

最大子段和問題

給定n個整數 可能為負整數 a1,a2,a3 an.求形如 ai,a i 1 aj i,j 1,n,i j 的子段和的最大值。當所有的整數均為負整數的時候定義其最大子段和為0,例如 當 a1,a2,a3,a4,a5,a6 2,11,4,13,5,2 時,最大子段和為 i 2,j 4 下標從1開始 列...