題解 作業 dp 最大子段和V1

2021-09-05 12:33:05 字數 664 閱讀 4848

題目傳送門

n個整數組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的連續子段和的最大值。當所給的整數均為負數時和為0。

例如:-2,11,-4,13,-5,-2,和最大的子段為:11,-4,13。和為20。

輸入第1行:整數序列的長度n(2 <= n <= 50000)

第2 - n + 1行:n個整數(-10^9 <= a[i] <= 10^9)

輸出輸出最大子段和。

輸入樣例6-2

11-4

13-5

-2輸出樣例

20分析:這是比較基礎的貪心題,用乙個sum記錄連續的子段和,然後判斷是否小於0,如果小於零,那麼肯定是捨棄當前段更優,然後在去乙個max即可。難度不高,注意本題會爆int

那麼具體**如下:

#include

using

namespace std;

#define ll long long

ll sum=0;

ll maxx=0;

ll n;

ll a[

1000001];

intmain()

cout

}

最大子段和 (dp

n個整數組成的序列a1,a2,a3,ann,求該序列如ai ai 1 aj的連續子段和的最大值。當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,13。和為20。第1行 整數序列的長度n 2 n 50000 第2 n 1行 n個整數 10 9 ai 10 9 ...

dp 最大子段和

注意 在實際問題中可能題目要求至少選乙個,可能可以乙個都不選 只返回最大子段和 include include using namespace std const int maxn 2e5 10 const int inf 0x7fffffff int n int a maxn int maxsum...

最大子段和(dp)

最基礎的的最大子段和,設dp i dp i dp i 為以num i num i num i 結尾的最大子段和,有dp i m ax d p i 1 n um i nu m i dp i max dp i 1 num i num i dp i max dp i 1 num i n um i 最終結果...