小岛 2008-10-19 03:51:00
点我顶贴
收藏
删除
采药...
一下这段代码可以得40分...
你知道这段代码哪里出现错误了吗?
const
nmax=100;
mmax=1000;
type
int=longint;
var
Dp:array[0..nmax,0..mmax] of int;
C:array[1..nmax] of int;
V:array[1..nmax] of int;
n,m,i,j:int;
ans:int;
function max(a,b:int):int;
begin
if a>b then exit(a)
else exit(b);
end;
begin
readln(m,n);
for i:=1 to n do
readln(C[i],V[i]);
for i:=1 to n do
for j:=C[i] to m do
dp[i,j]:=max(dp[i-1,j],dp[i-1,j-C[i]]+V[i]);
for j:=0 to m do
ans:=max(ans,dp[n,j]);
write(ans);
readln(n);
end.
#2 xiaokeke@2008-10-19 00:08:00
7011
回复
删除
晕
我看错了,还以为你用一维写的呢,SORRY^
你第二重循环j小于c[i]的时候直接dp[i,j]:=dp[i-1,j];
这样改改是不是行?