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;
赋这些值.