zoukankan      html  css  js  c++  java
  • 【C/C++】01背包问题/动态规划

    按小蓝书上写的大数据情况下没过,按解答区一个大佬的修改了过了

    #include <bits/stdc++.h>
    using namespace std;
    
    class Solution {
    public:
        /**
         * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
         * 计算01背包问题的结果
         * @param V int整型 背包的体积
         * @param n int整型 物品的个数
         * @param vw int整型vector<vector<>> 第一维度为n,第二维度为2的二维数组,vw[i][0],vw[i][1]分别描述i+1个物品的vi,wi
         * @return int整型
         */
        int knapsack(int V, int n, vector<vector<int>>& vw) {
            // write code here
            // 创建dp数组
            vector <vector<int>> dp;
            vector <int> tmp;
            tmp.insert(tmp.begin(), V + 1, 0);
            for (int i = 0; i <= n; i++)
            {
                dp.push_back(tmp);
            }
    
            for (int i = 1; i <= n; i++)
            {
                for(int j = 1; j <= V; j++)
                {
                    if (j < vw[i-1][0]) 
                    {
                        dp[i][j] = dp[i-1][j];
                    }
                    else
                    {
                        dp[i][j] = max(dp[i-1][j], dp[i-1][j-vw[i-1][0]] + vw[i-1][1]);
                    }
                }
                // for (int j = vw[i-1][0]; j <= V; j++)
                // {
                //     dp[i][j] = max(dp[i-1][j], dp[i-1][j-vw[i-1][0]] + vw[i-1][1]);
                // }
            }
            int maxx = 0;
    
            for (int i = 1; i <= V; i++)
            {
                maxx = max(dp[n][i], maxx);
            }  
    
            return maxx;
        }
    }; 
    
    int main()
    {
        vector<vector<int>> arr {{1,3},{10,4}};
        int v = 10, n = 2;
        Solution solution;
        cout << solution.knapsack(v, n, arr) << endl;
        system("pause");
    } 
    
  • 相关阅读:
    js对象深拷贝
    数组去重
    css布局之双飞翼布局
    css布局之圣杯布局
    在浏览器中输入URL并回车后都发生了什么?
    浮动和清除浮动
    Javascript 构造函数模式、原型模式
    Javascript之对象组合继承
    js可以随意拖拽的div的实现
    博客美化 之博客的魔方效果
  • 原文地址:https://www.cnblogs.com/kinologic/p/14672453.html
Copyright © 2011-2022 走看看