詳解複雜度 最大子列和問題

2021-10-07 13:55:33 字數 1551 閱讀 2856

題目詳情:

給定k個整數組成的序列[n​

1,n2

,...

,​nk

][n​1, n2, ..., ​nk]

[n​1,n

2,..

.,​n

k],「連續子列」被定義為[n​

i,n​

i+1​

,...

,n​j

][n​i, n​i+1​ , ..., n​j]

[n​i,n

​i+1

​,..

.,n​

j],其中1≤i

≤j≤k

1≤i≤j≤k

1≤i≤j≤

k。「最大子列和」則被定義為所有連續子列元素的和中最大者。例如給定序列[−2

,11,−

4,13,

−5,−

2]

[-2, 11, -4, 13, -5, -2 ]

[−2,11

,−4,

13,−

5,−2

],其連續子列[11,

−4,13

][ 11, -4, 13 ]

[11,−4

,13]

有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。

本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試資料特點如下:

資料1:與樣例等價,測試基本正確性;

資料2:102個隨機整數;

資料3:103個隨機整數;

資料4:104個隨機整數;

資料5:105個隨機整數;

輸入格式:

輸入第1行給出正整數k(≤

100000

)k (≤100000)

k(≤100

000)

;第2行給出k

kk個整數,其間以空格分隔。

輸出格式:

在一行中輸出最大子列和。如果序列中所有整數皆為負數,則輸出0。

輸入樣例:

6-2

11-413

-5-2

輸出樣例:

20
解題方法:動態規劃

完整程式如下:

#include

#include

#define max(x, y) (x >= y ? x : y)

//定義的巨集,用來取最大值

intmaxsubsum

(int nums,

int n)

;int

main()

intmaxsubsum

(int nums,

int n)

return

max(res ,0)

;}

手工碼字碼**,如果有幫助到你的話留個贊吧,謝謝。

以上。

複雜度1 最大子列和問題

給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。輸入格式 輸入第1行給出正整數 k 100000 第2行給出k個整數,其間以空格分隔。輸出格式...

時間複雜度 最大子列和問題

給定kk k個整數組成的序列,連續子列 被定義為n i 1 njn jn j 其中 1 i j k1 le i le j le k1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各...

複雜度1 最大子列和問題

暴力求解 求出所有可能的和 複雜度o n include include includeint a 100001 int main if thissum maxsum maxsum thissum printf d n maxsum return 0 暴力求解改進版 複雜度 n for後面還是加上 ...