讨论 / 求解:为啥错了?
ivanovliu 2010-08-11 06:51:00
点我顶贴 收藏 删除
我的程序如下:

VAR

f,a:ARRAY[0..10001] OF LONGINT;

n,i,j,k,m,s:LONGINT;

x:REAL;

BEGIN

for i:=0 to 10001 do

begin

f[i]:=0;

a[i]:=0;

end;

readln(n);

for i:=1 to n do

read(a[i]);

s:=0;

for i:=1 to n do

s:=s+a[i];

x:=s/2;

s:=trunc(s/2)+1;

for i:=1 to n do

for j:=s downto a[i] do

if f[j-a[i]]+a[i]>f[j] then

f[j]:=f[j-a[i]]+a[i];

m:=trunc(2*(abs(x-f[s])));

writeln(m);

END.

#1 ivanovliu@2010-08-11 06:51:00
回复 删除
自己发现了

s:=trunc(s/2)+1;错了,因该是s:=trunc(s/2);

查看更多回复
提交回复