为何不过?

P1048 [NOIP2005 普及组] 采药

程序如下 ```cpp var n,m,i,j,x,y:longint; f:array[0..50000] of longint; begin read(n,m); for i:=1 to m do begin read(x,y); for j:=n downto x do if f[j]<f[j-x]+y then f[j]:=f[j-x]+y; end; writeln(f[n]); end. ```
by zztzuishuai @ 2016-05-20 18:31:05


我的程序是这样的: ```cpp var m,n,i,j:longint;f,a,b:array[-100..100000] of longint; begin read(m,n); for i:=1 to n do read(a[i],b[i]); for i:=1 to n do for j:=m downto a[i] do if f[j]<f[j-a[i]]+b[i] then f[j]:=f[j-a[i]]+b[i]; write(f[m]); end. ```
by ghruik @ 2016-08-24 10:48:42


我知道你的程序错在哪里了,’for k:=ti downto v[i] do ‘v【i】代表价值,应改为t【i】这代表的是重量,你却变成了价值,其他好像都对的
by ghruik @ 2016-08-24 10:51:42


## 这是我的程序 ```cpp var n,m,i,j,v,p:longint; f:array[1..30001]of longint; begin readln(n,m); for i:=1 to m do begin readln(v,p); for j:=n downto v do if f[j]<f[j-v]+p then f[j]:=f[j-v]+p end; writeln(f[n]); ``` readln end.
by 石浩瀚 @ 2016-11-19 10:54:59


|