東大OJ 最大子串行問題的變形

2021-09-06 21:02:10 字數 1136 閱讀 4344

時間限制: 1 sec  

記憶體限制: 128 mb

提交: 224  

解決: 54 [

提交][

狀態][

討論版]

給定乙個n個整數組成的序列,整數有正有負,找出兩段不重疊的連續子串行,使得它們中整數的和最大。兩段子序列都可以為空。

多組輸入,每組第一行為n,表示序列的長度;第二行為n個整數(-1000<=n<=1000),表示輸入序列。 0

對於每組輸入,輸出一行,僅乙個整數,表示最大的和。

9

185 -580 -889 701 964 -878 353 -761 608

2273
第一步,求出最大子串行m;m表示max

第二步,求出不與m相交的第二大子串行s;s表示second

第三步,求出m中的最小子序列l;l表示little

最後,分兩種情況:m+s或者是m一分為二;

若s+l<0,說明l太小了,m應該捨棄l,一分為二;

否則,m+=s;

#includeusing namespace std;

int a[1000007];

int m[1000007];

int from, to;

int m, s, l;

int n;

void init()

else

if (m < m[i]) }}

void gets()

int now = a[to + 1];

for (i = to + 2; i < n; i++)

else

if (now > mm)mm = now;

} s = mm;

}void getl()

else

if (now < ll)ll = now;

} l = ll;

}int main()

init();

gets();

getl();

if (s + l < 0)

else

printf("%d\n", m);

} return 0;

}

最大子串行問題

問題描述 輸入一組整數,求出這組數字子串行和中最大值。也就是只要求出最大子串行的和,不必求出最大的那個序列。例如 序列 2 11 4 13 5 2,則最大子串行和為20。複雜度為o n 2 的演算法 include include int maxsubseqsum const int a,int n...

最大子串行問題

現在我們將敘述兩個演算法來求解最大子串行和問題 include int maxsubsequencesum int a,int n int main printf max d maxsubsequencesum a,15 return0 int maxsubsequencesum int a 15 ...

最大子串行問題

題目 給定乙個整數列 可能有負數 求該整數列每個子串行的和的最大值,如果都為負數則結果為0 例如 對於輸入 2,11,4,13,5,2 答案為20 從11 到 13,即就是 11 4 13 20 粗略 如下 已測試通過 include using namespace std arr 目標陣列,len...