讨论 / 终于AC了,请注意数据范围啊!!!
hncsyjc 2013-01-19 22:37:00
点我顶贴 收藏 删除
第一次程序:

var

f:array [0..10000,1..2] of longint;

l:array [1..100] of longint;

i,j,n:longint;

function min(a,b:longint):longint;

begin

if a>b then exit(b);exit(a);

end;

begin

readln(n);

for i:=1 to n do read(l[i]);

f[1,1]:=l[1];f[1,2]:=0;

for i:=2 to n do

begin

f[i,1]:=min(f[i-1,1],f[i-1,2])+l[i];

f[i,2]:=min(f[i-1,1],f[i-2,1]);

end;

writeln(min(f[n,1],f[n,2]));

end.

发现数组至少要开10000,否则爆掉

优化版本

var

f:array [-1..10000,1..2] of longint;

i,n,l:longint;

function min(a,b:longint):longint;

begin

if a>b then exit(b);exit(a);

end;

begin

readln(n);

for i:=1 to n do

begin

readln(l);

f[i,1]:=min(f[i-1,1],f[i-1,2])+l;

f[i,2]:=min(f[i-1,1],f[i-2,1]);

end;

writeln(min(f[n,1],f[n,2]));

end.

查看更多回复
提交回复