1691: 【基础】装箱问题
内存限制:512 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:12
解决:2
题目描述
有一个箱子容量为V(正整数,0≤V≤200000 ),同时有n个物品( 0<n≤30 ),每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
输入
1个整数,表示箱子容量
1个整数,表示有nnn个物品
接下来n行,分别表示这n个物品的各自体积
输出
1个整数,表示箱子剩余空间。
样例输入 复制
24
6
8
3
12
7
9
7
样例输出 复制
0
提示
#include<bits/stdc++.h>
using namespace std;
int dp[31][200010],v[31];
int main(){
int m,n,i,j;
cin>>m>>n;
for(i=1;i<=n;i++){
cin>>v[i];
}
for(i=1;i<=n;i++){
for(j=m;j>=1;j--){
if(j>=v[i]){
dp[i][j] = max(dp[i-1][j],dp[i-1][j-v[i]]+v[i]);
}else{
dp[i][j] = dp[i-1][j];
}
}
}
cout<<m-dp[n][m];
return 0;
}