开心的金明:顺推法
題意
在不超過N元(可以等于N元)的前提下,使每件物品的價(jià)格與重要度的乘積的總和最大。
分析
設(shè) f[i,j]表示前i件物品,總重量不超過j的最優(yōu)價(jià)值
則 f[i,j]=max{f[i-1,j-w[i]]+P[i]*v[i],f[i-1,j])(1<=i<=m,1<=j<=n,j>=w[i])順推
F[m,n]即為最優(yōu)解var
n,m,i,j:longint;
w:array[1..30000]of longint;
p:array[1..25]of longint;
f:array[0..25,0..30000]of longint;
begin
? ? read(n);read(m);
? ? for i:=1 to m do
? ? readln(w[i],p[i]);
? ? fillchar(f,sizeof(f),0);
? ? for i:=1 to m do
? ? begin
? ? ? ? for j:=1 to n do
? ? ? ? begin
? ? ? ? ? ? f[i,j]:=f[i-1,j];
? ? ? ? ? ? if (w[i]<=j)and(f[i,j]<=f[i-1,j-w[i]]+p[i]*w[i]) then f[i,j]:=f[i-1,j-w[i]]+p[i]*w[i];
? ? ? ? end;
? ? end;
? ? write(f[m,n]);
end.
轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9500176.html
總結(jié)
- 上一篇: 数字三角形:顺推法(一维数组)
- 下一篇: 采药:顺推法