最大子串和

来源:互联网 发布:php 统计在线人数代码 编辑:程序博客网 时间:2024/05/21 10:10

题意

给出一段序列,选出其中连续且非空的一段使得这段和最大。


分析

一个一个加,只要判断总和会不会小于0就行,小于0就接着往下重新计算和,因为如果所有数据里有正数的话,单个正数肯定更大,而如果都是负数的话,单个负数也比负数和大。


var
n,i,t,m:longint;
a:array[0..200000]of longint;
begin
    readln(n);
    for i:=1 to n do
    read(a[i]);
    t:=0;
    m:=-maxlongint;
    for i:=1 to n do
    begin
        t:=t+a[i];
        if t>m then m:=t;
        if t<0 then t:=0;
    end;
    write(m);
end.


0 0
原创粉丝点击