题解 | #装箱问题#

装箱问题

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")

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务