o(n)的算法
program t1(input,output);{连续最大和}
var
no:array[1..1000] of longint;
n,best:longint;
{====================================}
procedure init;
var
i:longint;
begin
best:=-maxlongint;
assign(input,'t1.in');
assign(output,'t1.out');
reset(input);
rewrite(output);
readln(n);
for i:=1 to n do read(no[i]);
close(input);
end;
{====================================}
procedure solve;
var
i,temp:longint;
begin
temp:=0;
for i:=1 to n do
begin
inc(temp,no[i]);
if temp>best then best:=temp;
if temp<0 then temp:=0;
end;
writeln(best);
close(output);
end;
{====================================}
begin
init;
solve;
end.
具体见
http://hi.baidu.com/guopiisgood/blog/item/8d0a2b24aa16bd30c995590a.html