讨论 / 求教
wsxtyrdd 2012-02-18 23:48:00
点我顶贴 收藏 删除

var i,j,t,k,s,m,n,l:longint;

f:array[0..1000,0..100]of longint;

w,v:array[0..100]of longint;

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

begin

max:=a;

if b>a then max:=b;

end;

begin

read(n,m,l);

for i:=1 to n do

read(w[i],v[i]);

for i:=1 to n-1 do

for j:=i to n do

if w[i]>w[j] then

begin

t:=w[i]; w[i]:=w[j]; w[j]:=t;

T:=v[i]; v[i]:=v[j]; v[j]:=t;

end;

for i:=1 to m do

s:=s+w[i];

if s>l then begin write(0); halt; end;

for i:=1 to n do

for j:=l downto w[i] do

for t:=1 to m do

f[j,t]:=max(f[j-w[i],t-1]+v[i],f[j,t]);

write(f[l,m]);

end.

这个 70 分

--------------------

但是

: view sourceprint?01.var i,j,t,k,s,m,n,l:longint;

02.

f:array[0..1000,0..1000]of longint;

03.

w,v:array[0..1000]of longint;

04.function max(a,b:longint):longint;

05.begin

06.max:=a;

07.if b>a then max:=b;

08.end;

09.begin

10.for i:=0 to 1000 do

11.for j:=0 to 1000 do

12.f[i,j]:=-maxlongint;

13.for i:=0 to 1000 do

14.f[i,0]:=0;

15.read(n,m,l);

16.for i:=1 to n do

17.read(w[i],v[i]);

18.for i:=1 to n-1 do

19.for j:=i to n do

20.if w[i]>w[j] then

21.begin

22.t:=w[i]; w[i]:=w[j]; w[j]:=t;

23.T:=v[i]; v[i]:=v[j]; v[j]:=t;

24.end;

25.for i:=1 to m do

26.s:=s+w[i];

27.if s>l then begin write(0); halt; end;

28.for i:=1 to n do

29.for j:=l downto w[i] do

30.for t:=m downto 1 do

31.f[j,t]:=max(f[j-w[i],t-1]+v[i],f[j,t]);

32.write(f[l,m]);

33.end.

就AC 了 为什么 要

10.for i:=0 to 1000 do

11.for j:=0 to 1000 do

12.f[i,j]:=-maxlongint;

13.for i:=0 to 1000 do

14.f[i,0]:=0;

赋这些值.

#1 wsxtyrdd@2012-02-18 23:48:00
回复 删除
95 题 多多DVD
查看更多回复
提交回复