最大子段和

2021-10-11 20:50:48 字數 1171 閱讀 3011

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

要求演算法的時間複雜度為o(n)。

輸入格式:

輸入有兩行:

第一行是n值(1<=n<=10000);

第二行是n個整數。

輸出格式:

輸出最大子段和。

輸入樣例:

在這裡給出一組輸入。例如:

6-2 11 -4 13 -5 -2

輸出樣例:

在這裡給出相應的輸出。例如:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

const

int inf=

0x3f3f3f3f

;typedef

long

long ll;

const

int mod=

1e9+7;

using

namespace std;

#define arr_size 10001

intmaxsub

(int a,

int left,

int right)

;int

main()

intmaxsub

(int a,

int left,

int right)

sum+

=sum1;

sum1 =0;

int rsum=0;

for(

int i=center+

1;i<=right;i++

) sum+

=sum1;

if(sumif(sum}return sum;

}

最大子段和

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

最大子段和

問題表述 n個數 可能是負數 組成的序列a1,a2,an.求該序列 例如 序列 2,11,4,13,5,2 最大子段和 11 4 13 20。1 窮舉演算法 o n3 o n2 2 分治法 將序列a 1 n 從n 2處截成兩段 a 1 n 2 a n 2 1 n 例項 三 最大子段和 問題表述 n個...

最大子段和

再給頂的n個數的陣列中選出連續的若干個數,使得他們的和是最大的,即最大連續自序列和.列如.序列.1 2 3 1 6 5 9 結果 當取子串行 3,1,6,5,9 結果12 我的思路.1.最大連續子串行的開頭是在1.n之中.的最大連續和 2.求出以i,開頭的最大連續和,此時開頭已經確定了,那麼通過列舉...