您的位置:首页 > 其它

codevs天梯 装箱问题 水01背包

2017-01-30 20:49 218 查看
题目:

有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。

要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
分析:
经典01背包问题

代码:

const

  maxn=20000;

var

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

  n,v:longint;

procedure init;

var

  i:longint;

begin

  readln(v,n);

  for i:=1 to n do

   readln(a[i]);

end;

procedure main;

var

  i,j:longint;

begin

 for i:=1 to n do

   for j:=v downto a[i] do

     if f[j]<f[j-a[i]]+a[i] then

       f[j]:=f[j-a[i]]+a[i];

  write(v-f[v]);

end;

begin

  init;

  main;

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: