洛谷 1115 最大子段和(線性資料結構)

2022-09-18 01:33:20 字數 936 閱讀 9378

題目描述

給出一段序列,選出其中連續且非空的一段使得這段和最大。

輸入輸出格式

輸入格式:

輸入檔案maxsum1.in的第一行是乙個正整數n,表示了序列的長度。

第2行包含n個絕對值不大於10000的整數a[i],描述了這段序列。

輸出格式:

輸入檔案maxsum1.out僅包括1個整數,為最大的子段和是多少。子段的最小長度為1。

輸入輸出樣例

輸入樣例#1:

7 2 -4 3 -1 2 -4 3

輸出樣例#1:

4 說明

【樣例說明】2 -4 3 -1 2 -4 3

【資料規模與約定】

對於40%的資料,有n ≤ 2000。

對於100%的資料,有n ≤ 200000。

一重迴圈,設f[i]為加到第i個數的最大值。

dp式為f[i]:=max(f[i-1]+a[i],a[i]);

**如下:

uses math;

var f:array[0..200000]of longint;

a:array[0..200000]of longint;

i,j,n,maxx:longint;

begin

readln(n);

maxx:=-maxlongint;

for i:=1

to n do

read(a[i]);

f[0]:=0;

for i:=1

to n do

begin

f[i]:=max(f[i-1]+a[i],a[i]);

if f[i]>maxx then maxx:=f[i];

end;

writeln(maxx);

end.

洛谷1115 最大子段和

最大子段和 問題描述 給出一段序列,選出其中連續且非空的一段使得這段和最大。分析 從第乙個一直往後加,記錄最大值,加到和為負數時從0開始繼續加。注意會有全是負數的情況最後判斷即可。時間複雜度 o n const maxn 200000 vara array 0.maxn of longint n,a...

洛谷 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個...