DP地狱训练 装箱问题
1252: [DP地狱训练]装箱问题
时间限制: 1 Sec 内存限制: 64 MB
提交: 722 解决: 343
[提交][状态][讨论版]题目描述
有一个箱子容量为V(正整数,0 ≤ V ≤ 20000),同时有n个物品(0 < n ≤ 30),每个物品有一个体积(正整数)。要求从n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入
输入有若干行。第一行:一个整数,表示箱子容量V;第二行:一个整数,表示物品个数n;接下来n行,分别表示这n个物品的各自体积。输出
输出只有一行数据,该行只有一个数,表示最小的箱子剩余空间。样例输入
24 6 8 3 12 7 9 7样例输出
0
 
1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #include <cstring> 5 #include <cstdlib> 6 7 using namespace std; 8 9 int n, V, f[30000], v; 10 11 int main(){ 12 scanf("%d%d", &V, &n); 13 for(int i = 1 ; i <= n ; i ++){ 14 scanf("%d", &v); 15 for(int j = V ; j >= v ; j --){ 16 f[j] = max(f[j], f[j - v] + v); 17 } 18 } 19 printf("%d\n", V - f[V]); 20 }

 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号