装箱问题
【问题描述】: 有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积 (正整数)。要求从m个物品中,任取若千个装入箱内,使箱子的剩余空间为最小。
【样例】
【输入】:(boxes.in)
24 一个整数,表示箱子容量
6 一个整数,表示有n个物品
8 接下来n行,分别表示这n个物品的各自体积。
3
12
7
9
7
【输出】:(boxes.out)
0 一个整数,表示箱子剩余空间。
#include <stdio.h>
#include <stdlib.h>
int n, v;
int d[31];
int ans = 0;
void process(int i, int carry)
{
if (i > n) return ;
if (carry <= v) {
if (carry > ans) ans = carry;
} else return ;
process(i + 1, carry);
if (carry + d[i] > v) return ;
else process(i + 1, carry + d[i]);
}
int main()
{
FILE *in,*out;
ans = 0;
in = fopen("boxes.in","rt");
out = fopen("