求陣列中數的最大連續和,如[1, -1, 1, 1, 1],最大連續和為3
一、動態規劃
當我們從頭到尾遍歷這個陣列的時候,對於陣列裡的乙個整數,它有幾種選擇呢?它只有兩種選擇: 1、加入之前的subarray;2. 自己另起乙個subarray。那什麼時候會出現這兩種情況呢?
設狀態為f[j],表示以s[j]結尾的最大連續子串行和,則狀態轉移方程如下:
}二、分治法分治法,求左區間最大值l:以及右區間最大值r,然後從中間開始,往左右找最大連續和m,返回max(l, r, m)
#include
#include
using
namespace
std;
int maxsubsum(int arr, int x, int y)
int main()
最大連續和
這個問題對我來說還挺難的,當初做dp時水過去了,但沒徹底理解,這次打算好好分析一下,爭取徹底搞懂。首先,像 1 1 2 2 3 3 4 4 5 5這樣的數列,想要找連續最大和,可以有很多種方法,從最慢的列舉o n 3 到最快的動態規劃o n 毫無疑問,我們要選擇複雜度低的演算法。所以我這裡就只分析兩...
最大連續和
給出乙個長度為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 ...
最大連續和
思路 設sum i 為前i個元素中,包含第i個元素且和最大的連續子陣列,result 為已找到的子陣列中和最大的。對第i 1個元素有兩種選擇 做為新子陣列的第乙個元素 放入前面找到的子陣列。sum i 1 max a i 1 sum i a i 1 result max result,sum i 方...