装箱问题 问题描述 有一个箱子容量为V(正整数,0<= V<=20000),同时有n个物品(0 <n<=30=,每个物品有一个体积 (正整数)。 要求n个物品中,任取若干个装入箱 内,使箱子的剩余空间为最小。 样例 输入: 24 一个整数,表示箱子容量 6 一个整数,表示有n个物品 8 接下来n行,分别表示这n 个物 品的各自体积 3 12 7 9 7 输出: 0 一个整数,表示箱子剩余空间。 ============================
用穷举方法。。。求解。。怎么求 出所有可能的组合,然后对比,选 出一种最接近答案的方法。。输出 答案! 要说思想 最好能用Pascal写出来。。。
以下程序用递归实现:
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.
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息