題目詳情:
給定k個整數組成的序列[n
1,n2
,...
,nk
][n1, n2, ..., nk]
[n1,n
2,..
.,n
k],「連續子列」被定義為[n
i,n
i+1
,...
,nj
][ni, ni+1 , ..., nj]
[ni,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後面還是加上 ...