求最大子段和

2021-10-23 12:33:48 字數 1079 閱讀 2679

給定乙個整數序列,你需要找到兩個連續子段,保證這兩個子段不能重疊,並且使得這兩個子段中

所有整數的和最大。

輸入描述

包含一系列的測試用例,

第1行是乙個整數,表示測試用例的總數t,(1<=t<= 30)。

每個測試用例包括3行:

第1行是個整數, 表示該整數序列的長度n,(2 <= n <= 5000);

第2行是乙個包含n個整數的序列: d1, d2, ……dn, (|di|<= 10000)

輸出描述

每個測試用例的輸出包括1行, 即該測試用例的最大子段和,

樣例輸入

3

101 -1 2 2 3 -3 4 -4 5 -5

5-5 9 -5 11 20

10-1 -1 -1 -1 -1 -1 -1 -1 -1 -1

樣例輸出

13

40-2

提示

在第1個測試用例中,我們選擇的兩個子段分別是: (2.2.3.-3. 4)和(5)。

對於較大的輸入序列,我們推薦使用scanf_s或scanf函式。

源**

#include using namespace std;

int maxsum(const int a, int m, int n);

int main()

for (int i = 2; i < n; i++)

cout << max << endl;

}}int maxsum(const int a, int m, int n)

return max;

}

求最大子段和

給定乙個整數序列,你需要找出兩個連續子段,保證這兩個子段不能重疊,並且使得這兩個子段中所有整數的和最大。輸入描述 包含一系列的測試用例。第1行是乙個整數,表示測試用例的總數t,1 t 30 第1行後面跟了乙個空行。每個測試用例包括3行 第1行是乙個整數,表示該整數序列的長度n,2 n 5000 第2...

求m段最大子串行和

每日打卡 1 1 題目大意 求m段最大子串行和 題目思路 對於前i個數分成j組,可以得到最大的子串行和可以記為dp i j 那麼我們對於第i個數,有兩種方法 1 直接成為當前組的最後乙個,即dp i j dp i 1 j a i 2 或者我們新開一組,讓他成為第乙個,那麼前i 1個數就可以分成j 1...

最大子段和

設a 是n個整數的序列,稱為該序列的子串行,其中1 i j n.子串行的元素之和稱為a的子段和.例如,a 2,11,4,13,5,2 那麼它的子段和是 長度為1的子段和 2,11,4,13,5,2 長度為2的子段和 9,7,9,8,7 長度為3的子段和 5,20,4,6 長度為4的子段和 18,15...