永发信息网

noip2001第4题 装箱问题

答案:4  悬赏:50  手机版
解决时间 2021-04-28 03:18
有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30=,每个物品有一个体积(正整数)。 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。 样例 在这里 样例输入 Sample Input 24 6 8 3 12 7 9 7 样例输出 0 高手们帮忙看看 我知道是0-1背包问题,我学的是free pascal 语言,给一下各位高手的程序,指导一下!!!
最佳答案

program lxy(input,output);
var v:array[0..20000] of boolean;
    w:array[0..30] of integer;
    vsum,n,m,i,j:integer;
begin
 fillchar(v,sizeof(v),false);
 v[0]:=true;
 readln(vsum);
 readln(n);
 for i:=1 to n do readln(w[i]);
 for i:=1 to n do
  for j:=vsum downto w[i] do
   if v[j-w[i]] then v[j]:=true;
 for i:=vsum downto 0 do
  if v[i] then
    begin
    writeln(vsum-i);
    break;
    end;
end.


v[i]表示体积为i时是否可以装满 程序应该容易看懂吧=。=

全部回答

这是最基础的01背包问题,给你个程序吧:

program dd; var a:array[0..20000] of longint;     i,j,n,v,t:longint; begin readln(v);readln(n); fillchar(a,sizeof(a),0); for i:=1 to n do begin    readln(t);    for j:=v-t downto 0 do     if a[j]+t>a[j+t] then a[j+t]:=a[j]+t; end; writeln(v-a[v]); end.
你的j循环有点问题,照你的程序来看,会导致同一个物品反复装进箱子里面比如:假设有一件物品体积为1,那么你的箱子就被装满了能过的那个点可能是你运气好吧

var  i,j,k,m,n,t:longint;  a,f:array[0..20000]of longint;

begin  readln(m);readln(n);  for i:=1 to n do  readln(a[i]);

 f[0]:=1;  for i:=1 to n do   for j:=m downto a[i] do    if f[j-a[i]]=1 then f[j]:=1;

 for i:=m downto 1 do   if f[i]=1 then     begin writeln(m-i);halt;end; end.

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
诺基亚6210c5320XM那个好?
叶公好龙怎么改编?
索爱U5i通讯录文件夹位置
QQ三国中YY带什么五虎好?
去除粉刺的方法
宏基笔记本4820
带有南岳衡山的诗词,有关南岳衡山的好词好句
都会立方商业楼地下停车场在哪里啊,我有事要
如果你是【蜗居】里的男主角小贝你会原谅小贝
怎么灭掉QQ空间图标?
我qq现在是18级,要是现在开通年费版超级qq一
月经量非常多,有大血块
你好呢帮我激活下AVA 电信区吗?
梦幻西游网易宝帐户被冻结
为什么我的压缩文件打不开?
推荐资讯
qq音速中星星歌曲有一个唱阿里路亚的那首歌叫
09年捷达前卫什么配置
带有酒精成分的卸妆水,对皮肤好不好?
找与联想sl410 2842evc配置差不多的本本
我是农历1994年2月24日的,我是什么星座,什
游戏王第一部三幻神的效果对神有效不?
刘涛演的《白蛇传》片头和片尾曲是什么?
精舞门里最后决战的那个歌曲叫什么名字?
天成门窗厂怎么去啊,有知道地址的么
我女儿刚满三月今天突然拉肚子吃什么药才好
请教,一些基本的电脑问题!
多少级点亮QQ炫舞图标
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?