我按照题目要求编了一个程序,题目中要求的内存需求有点大。
题目:老师给笑笑布置了一份作业,笑笑不知如何解决,找你帮忙解决。老师给了一串很长的数列,要求从中找出连续的一段来使得总和最大。
输入文件第一行包括一个整数n,表示数列长度为n(n<=100000)。第二行包括n个整数来描述这个数列,每个整数的绝对值不超过1000。
这是我的DP代码程序:
var
a,b:array[0..100000] of integer;
i,j,n,ans:longint;
f:array[1..100000,1..100000]of integer;
begin
readln(n);
fillchar(b,sizeof(b),0);
for i:=1 to n do
begin
read(a[i]);
b[i]:=b[i-1]+a[i];
end;
ans:=-maxlongint;
for i:=1 to n do
for j:=i to n do
begin
f[i,j]:=b[j]-b[i-1];
if ans<f[i,j] then ans:=f[i,j];
end;
writeln(ans);
end.
可是输入数据后却提示216:存取非法。我再试几遍,尽然弹出
这怎么回事啊