最大連續子數列和

2021-09-11 03:14:37 字數 619 閱讀 4818

最大連續子數列和一道很經典的演算法問題,給定乙個數列,其中可能有正數也可能有負數,我們的任務是找出其中連續的乙個子數列(不允許空序列),使它們的和盡可能大。

為了更清晰的理解問題,首先我們先看一組資料:

8

-2 6 -1 5 4 -7 2 3

第一行的8是說序列的長度是8,然後第二行有8個數字,即待計算的序列。

對於這個序列,我們的答案應該是14,所選的數列是從第2個數到第5個數,這4個數的和是所有子數列中最大的。

動態規劃演算法:

dp[k] = max(0, dp[k-1]) + num[k - 1]

以第k個數字結尾的最大連續子串行的和, k>=2 && k <=n, dp[1]=num[0];

#include int sumofseq(int* num, int n)

return res;

}int main()

; int result = sumofseq(num, 8);

printf("result = %d\n", result);

return 0;

}

最大連續子數列和

題目分析 當我們從前向後遍歷陣列時,對於陣列中每乙個整數,它只有兩種選擇 1 加入到之前的subarray 2 自己另起乙個subarray。那什麼時候會出現這兩種情況呢?如果之前的subarray的總體和大於0的話,我們認為其對後續的結果是有貢獻的。這種情況下我們選擇 將其加入之前的subarra...

最大連續數列和

對於乙個有正有負的整數陣列,請找出總和最大的連續數列。給定乙個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...