您的位置:首页 > 其它

完全背包 第三解法 一维以重量为阶段。

2017-03-03 19:41 155 查看
完全背包
Time Limit:1000MS  Memory Limit:65536K

Total Submit:389 Accepted:259
Description

设有n 种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n 种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。

Input

第一行:两个整数,M(背包容量,M<= 200)和N(物品数量,N<= 30); 第2..N+1 行:每行二个整数Wi,Ui,表示每个物品的重量和价值。

Output

仅一行,一个数,表示最大总价值。

Sample Input


12 4
2  1
3  3
4  5
7  9


Sample Output


15


Source

elba

公式:

    f[i]:=max(f[i],f[i-b[j]]+a[j]);

var
i,j,k,n,m,max:longint;
a,b:array[-1..40000]of longint;
f:array[-200..200]of longint;
begin
readln(m,n);
for i:=1 to n do read(b[i],a[i]);
for i:=1 to m do
begin
for j:=1 to n do
begin
if i>=b[j] then k:=f[i-b[j]]+a[j];
if k>f[i] then f[i]:=k;
end;
end;
writeln(f[m]);
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: