最大子段和
問題描述
給出一段序列,選出其中連續且非空的一段使得這段和最大。
分析
從第乙個一直往後加,記錄最大值,加到和為負數時從0開始繼續加。注意會有全是負數的情況最後判斷即可。
時間複雜度
o(n)
**
const
maxn=200000;
vara:array[0..maxn] of longint;
n,ans,i,x:longint;
begin
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n do
begin
x:=x+a[i];
if x>ans then ans:=x;
if x<0 then x:=0;
end;
if ans=0 then
begin
ans:=-maxlongint;
for i:=1 to n do
if a[i]>ans then ans:=a[i];
end;
writeln(ans);
end.
洛谷 1115 最大子段和
題解 經典的最大子段和問題。如果當前sum大於等於0,就累加上當前的數 當前的sum小於0,就把sum變為0,即之前的那些都不取,因為它們對答案的貢獻是負的。掃一遍即可。1 include2 include3 include4 define ll long long 5 define rg regi...
洛谷P1115最大子段和
洛谷1115 最大子段和 題目描述 給出一段序列,選出其中連續且非空的一段使得這段和最大。輸入輸出格式 輸入格式 輸入檔案maxsum1.in的第一行是乙個正整數n,表示了序列的長度。第2行包含n個絕對值不大於10000的整數a i 描述了這段序列。輸出格式 輸入檔案maxsum1.out僅包括1個...
洛谷 P1115 最大子段和
給出一段序列,選出其中連續且非空的一段使得這段和最大。輸入格式 輸入檔案maxsum1.in的第一行是乙個正整數n,表示了序列的長度。第2行包含n個絕對值不大於10000的整數a i 描述了這段序列。輸出格式 輸入檔案maxsum1.out僅包括1個整數,為最大的子段和是多少。子段的最小長度為1。輸...