讨论 / 精通背包的大牛们来看一下为什么这样改就对了?
fxt 2011-07-25 18:24:00
点我顶贴 收藏 删除
这是第一个 应该对的为什么不对啊?

program jiang;

var

f,a,b:array [0..10000] of longint;

n,m,i,j:longint;

begin

readln(n,m);

for i:=1 to n do

readln(a[i],b[i]);

fillchar(f,sizeof(f),0);

f[0]:=1;

for i:=1 to m do

for j:=1 to n do

if (i-a[j]>=0) and (f[i-a[j]]+b[j]>f[i]) and (f[i-a[j]]<>0) then f[i]:=f[i-a[j]]+b[j];

writeln(f[m]-1);

end.

第二个 也不对 我把1改为a【j】就过了为什么啊

program jiang;

var

f,a,b:array [0..10000] of longint;

n,m,i,j:longint;

begin

readln(n,m);

for i:=1 to n do

readln(a[i],b[i]);

fillchar(f,sizeof(f),0);

f[0]:=1;

for j:=1 to n do

for i:=1 to m do

if (i-a[j]>=0) and (f[i-a[j]]+b[j]>f[i]) and (f[i-a[j]]<>0) then f[i]:=f[i-a[j]]+b[j];

writeln(f[m]-1);

end.

program jiang;

var

f,a,b:array [0..10000] of longint;

n,m,i,j:longint;

begin

readln(n,m);

for i:=1 to n do

readln(a[i],b[i]);

fillchar(f,sizeof(f),0);

f[0]:=1;

for j:=1 to n do

for i:=a[j] to m do

if (i-a[j]>=0) and (f[i-a[j]]+b[j]>f[i]) and (f[i-a[j]]<>0) then f[i]:=f[i-a[j]]+b[j];

writeln(f[m]-1);

end.

查看更多回复
提交回复