题解 | #装箱问题#
装箱问题
https://www.nowcoder.com/practice/c990bd0bf8e04bfbb19c0964401c8f77
#include <iostream>
using namespace std;
const int N = 2*1e4+10;
int dp[N]; //dp[k]表示容量为v时,最大能装多大体积的物品
int nums[31];
int main() {
int v,n;
scanf("%d", &v);
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%d", &nums[i]);
}
for(int i = 1; i<=n;i++){
for(int j = v; j >= 0; j--){
if(j>=nums[i]){
dp[j] = max(dp[j], dp[j-nums[i]]+nums[i]);
}
}
}
printf("%d", v-dp[v]);
return 0;
}
// 64 位输出请用 printf("%lld")
SHEIN希音公司福利 280人发布