最大連續子數列和

2021-09-08 02:58:44 字數 913 閱讀 4023

題目分析:

當我們從前向後遍歷陣列時,對於陣列中每乙個整數,它只有兩種選擇:

1)加入到之前的subarray;

2) 自己另起乙個subarray。那什麼時候會出現這兩種情況呢?

如果之前的subarray的總體和大於0的話,我們認為其對後續的結果是有貢獻的。這種情況下我們選擇

將其加入之前的subarray中。如果之前的subarray的總體和為0或者小於0的話,我們認為其對後續的結

果是沒有貢獻的,甚至是有害的(小於0時)。這種情況下,我們選擇以這個數字開始,另起乙個subarray。

1. 暴力解法

int sum = 0;

int global = integer.min_value;

// 設計暴力演算法

public int solve(int idx, int nums)

else

solve(idx+1, nums);

return global; }

public int maxsubarray(int nums)

2. 其他思路

public int maxsubarray(int nums) 

int curmax = nums[0];

int globalmax = curmax;

for (int i=1; i0) else

globalmax = math.max(globalmax, curmax);

} return globalmax;

}

最大連續子數列和

最大連續子數列和一道很經典的演算法問題,給定乙個數列,其中可能有正數也可能有負數,我們的任務是找出其中連續的乙個子數列 不允許空序列 使它們的和盡可能大。為了更清晰的理解問題,首先我們先看一組資料 8 2 6 1 5 4 7 2 3 第一行的8是說序列的長度是8,然後第二行有8個數字,即待計算的序列...

最大連續數列和

對於乙個有正有負的整數陣列,請找出總和最大的連續數列。給定乙個int陣列a和陣列大小n,請返回最大的連續數列的和。保證n的大小小於等於3000。測試樣例 1,2,3,6,1 返回 6 思路 動態規劃法。設record j 為以a i 為結尾的最大連續數列和,然後求最大值。class maxsum p...

最大連續數列的和

最大連續數列的和 time limit 1000ms memory limit 65536k total submit 140 accepted 81 description 求最大連續子串行的和 input 第一行輸入n n 500 第二行為n個以空格分開的整數 1000到1000之間 outpu...