美文网首页
洛谷 P1049 装箱问题 题解

洛谷 P1049 装箱问题 题解

作者: 帅气的小屁孩_8d50 | 来源:发表于2018-10-31 23:02 被阅读0次

    思路

    这个题目其实只要把 0 1背包中的每个物品的价值改成每个物品的重量就可以了。

    总结

    我们在进行动态规划的时候假如要涉及某个变量,如这个题目中的体积那么就把体积这个变量加dp方程里面就可以了。

    代码

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    
    const int N = 35;
    
    int v; //箱子的容量
    int n; //物品的个数
    int w[N]; //物品各自的体积
    int dp[20005]; 
    
    int main(int argc, char const *argv[]) {
        scanf("%d", &v);
        scanf("%d", &n);
        for (register int i = 1; i <= n; ++i) 
            scanf("%d", &w[i]);
        for (register int i = 1; i <= n; ++i) {
            for (register int j = v; j >= 0; --j) {
                if (j >= w[i])  
                    dp[j] = max(dp[j], dp[j - w[i]] + w[i]);
            }
        }
        printf("%d\n", v - dp[v]);
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:洛谷 P1049 装箱问题 题解

          本文链接:https://www.haomeiwen.com/subject/zhnztqtx.html