求最大子段和

2021-10-09 06:30:14 字數 998 閱讀 7278

給定乙個整數序列,你需要找出兩個連續子段,保證這兩個子段不能重疊,並且使得這兩個子段中所有整數的和最大。

輸入描述:

包含一系列的測試用例。

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

每個測試用例包括3行:

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

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

第3行是乙個空行。

輸出描述:

每個測試用例的輸出包括1行,即該測試用例的最大欄位和。

樣例輸入:310

1 -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

樣例輸出:

1340

-2暴力法

其中求最大子序和的子程式參考leetcode 53.最大子序和。

#include

#include

#include

using namespace std;

intfindsum

(vector<

int> num,

int begin,

int end)

return res;

}int

main()

}for

(int i =

0; i < n; i++

) res.

push_back

(maxsum);}

for(

int i =

0; i < res.

size()

; i++

)return0;

}

求最大子段和

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

求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...