題目分析:1. 暴力解法當我們從前向後遍歷陣列時,對於陣列中每乙個整數,它只有兩種選擇:
1)加入到之前的subarray;
2) 自己另起乙個subarray。那什麼時候會出現這兩種情況呢?
如果之前的subarray的總體和大於0的話,我們認為其對後續的結果是有貢獻的。這種情況下我們選擇
將其加入之前的subarray中。如果之前的subarray的總體和為0或者小於0的話,我們認為其對後續的結
果是沒有貢獻的,甚至是有害的(小於0時)。這種情況下,我們選擇以這個數字開始,另起乙個subarray。
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...