永发信息网

关于01装箱问题的解

答案:1  悬赏:0  手机版
解决时间 2021-06-03 00:50
  • 提问者网友:沦陷
  • 2021-06-02 02:12

装箱问题 问题描述 有一个箱子容量为V(正整数,0<= V<=20000),同时有n个物品(0 <n<=30=,每个物品有一个体积 (正整数)。 要求n个物品中,任取若干个装入箱 内,使箱子的剩余空间为最小。 样例 输入: 24 一个整数,表示箱子容量 6 一个整数,表示有n个物品 8  接下来n行,分别表示这n 个物 品的各自体积 3 12 7 9 7 输出: 0  一个整数,表示箱子剩余空间。 ============================

用穷举方法。。。求解。。怎么求 出所有可能的组合,然后对比,选 出一种最接近答案的方法。。输出 答案! 要说思想 最好能用Pascal写出来。。。

最佳答案
  • 五星知识达人网友:妄饮晩冬酒
  • 2021-06-02 02:20

以下程序用递归实现:


var
n,k,i,max:integer;
a:array [1..30] of integer;
procedure put(p,s:integer);
var j:integer;
begin
for j:=0 to 1 do //0表示不选,1表示选
begin
s:=s+a[p]*j;
if s<n then if p<k then put(p+1,s);
if s<=n then if s>max then max:=s;
s:=s-a[p]*j;
end;
end;
begin
readln(n,k);
for i:=1 to k do
readln(a[i]);
put(1,0);
writeln(n-max);
end.

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯