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 }
View Code

 



posted @ 2017-08-08 15:44  KingSann  阅读(191)  评论(0)    收藏  举报