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; }