最大子串行和 連續

2022-02-02 11:47:28 字數 1328 閱讀 2610

//

最大子串行和(連續):

//#include

using

namespace

std;

int maxsum(int* a, int

n)

return

sum;

}int

main()

; //

測試全是負數的用例

cout<4)

cout

<8)

"pause");

return

0;

} /*

比如陣列:1, -2, 3, 10, -4, 7, 2, -5

最大子串行和為13

一種是暴力列舉o(n^3),兩個for迴圈確定邊界,第三個for迴圈遍歷相加比較。

for(i=0,i---n) for(j=i,j---n) for(k=i,k---n) sum+=s[k]

一種遍歷o(n^2):第二個for迴圈裡j一邊移動一邊相加然後比較。

for(i=0,i---n) for(j=i,j---n) sum+=s[j]

一種是用dp來考慮,最大子串行要麼是在左半,要麼是在右半,要麼

橫跨左右o(nlogn)。

一種是線性的,如上o(n)

*/

//

分治法:/要看看遞迴和二分了

#include

using

namespace

std;

//求三個數最大值

int max3(int i, int j, int

k)int maxsequence2(int a, int l, int

u)

//求橫跨左右的最大連續子串行右半部分

int rmax=a[m+1], rsum = 0

;

for (int i=m+1; i<=u; i++)

//如果最大子串行跨越左半邊和右半邊的話,那麼就是左半邊的lmax和右半邊的rmax的和。

return max3(lmax+rmax, maxsequence2(a, l, m), maxsequence2(a, m+1

, u));

}int

main()

; //

測試全是負數的用例

//coutcout

<0,8)

"pause");

return

0;

}

最大子串行和 連續or不連續

coding utf 8 created on sun oct 14 21 10 28 2018 author dell 功能 最大子串行問題 def test func num list 求陣列中最大子串行的和,子串行可以不連續 也可以寫成if判斷語句只累加整數即可 n len num list ...

求連續序列的最大子串行和

求乙個序列的最大子串行和,這個可以有幾種方法都可以去求解,這裡我提供兩種方法給大家。假如這個序列是,顯然最大子串行和是7,那麼這個要怎麼去計算呢?第一種方法就是順序求取,可以先算一下只有乙個元素的最大值是多少,再算一下連續兩個元素的最大值是多少,再算一下連續三個元素的最大值是多少 直到n個元素全部都...

c 最大子串行和 最大連續子串行

最大連續子串行 是指序列中所有子串行中元素和最大的乙個 例如中最大連續子串行為其和為20 若所有k個元素都為負數,則定義其最大和為0,輸出整個序列的首尾元素 includeusing namespace std 最大連續子串行 是指序列中所有子串行中元素和最大的乙個 例如中最大連續子串行為其和為20...