wikioi 1014 装箱问题(背包)
题目描述 Description
有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
输入描述 Input Description
一个整数v,表示箱子容量
一个整数n,表示有n个物品
接下来n个整数,分别表示这n 个物品的各自体积
输出描述 Output Description
一个整数,表示箱子剩余空间。
样例输入 Sample Input
24
6
8
3
12
7
9
7
样例输出 Sample Output
0
View Code1 2 #include<iostream> 3 #include<string.h> 4 #include<stdio.h> 5 #include<ctype.h> 6 #include<algorithm> 7 #include<stack> 8 #include<queue> 9 #include<set> 10 #include<math.h> 11 #include<vector> 12 #include<map> 13 #include<deque> 14 #include<list> 15 using namespace std; 16 int a[1000],f[100000]; 17 int main() 18 { 19 int v,n; 20 cin>>v>>n; 21 for(int i=0;i<n;i++) 22 { 23 cin>>a[i]; 24 } 25 for(int i=0;i<n;i++) 26 { 27 for(int j=v;j>=a[i];j--) 28 { 29 f[j]=max(f[j],f[j-a[i]]+a[i]); 30 } 31 } 32 cout<<v-f[v]; 33 34 }