1019 最大連續和 模板

2021-08-29 09:30:40 字數 658 閱讀 7448

給出一串長度為 n 的數列,要求從中找出連續的一段來使得總和最大。

第一行包含乙個整數 n(1≤n≤100000),表示數列的長度。

第二行包含 n 個整數來描述這個數列 a[i](i從1~n編號),每個整數的的絕對值不超過 1000。

第一行輸出乙個整數,為最大的連續段總和。 

第二行輸出兩個整數,分別表示最大的連續段的起始位置和終止位置。

輸入

1 -2 3 1 -4

輸出

3 4

分析

我用的就是dp,這個dp基於貪心

定義dp[i]表示以a[i]結尾的最大連續和

**

#includeusing namespace std;

const int n=100009;

int n,a[n],dp[n],sta[n],end[n];

int main()

} else

} }printf("%d\n",ans);

printf("%d %d",qi,zhong);

return 0;

}

最大連續和

這個問題對我來說還挺難的,當初做dp時水過去了,但沒徹底理解,這次打算好好分析一下,爭取徹底搞懂。首先,像 1 1 2 2 3 3 4 4 5 5這樣的數列,想要找連續最大和,可以有很多種方法,從最慢的列舉o n 3 到最快的動態規劃o n 毫無疑問,我們要選擇複雜度低的演算法。所以我這裡就只分析兩...

最大連續和

求陣列中數的最大連續和,如 1,1,1,1,1 最大連續和為3 一 動態規劃 當我們從頭到尾遍歷這個陣列的時候,對於陣列裡的乙個整數,它有幾種選擇呢?它只有兩種選擇 1 加入之前的subarray 2.自己另起乙個subarray。那什麼時候會出現這兩種情況呢?設狀態為f j 表示以s j 結尾的最...

最大連續和

給出乙個長度為n的序列a1,a2,an,求最大連續和 使用列舉 時間複雜度o n 3 best a 1 初始最大值 for int i 1 i n i 設si a1 a2 ai,則ai ai 1 aj sj si 1 連續子串行的和等於兩個字首之差 時間複雜度o n 2 s 0 0 for int ...