算法训练营day46

完全背包和01背包的区别就是是否可以重复使用,在代码上就是 j 的 for 循环从前向后遍历还是从后向前遍历

题目:52. 携带研究材料(第七期模拟笔试) (kamacoder.com)

复制代码
#include<iostream>
#include<vector>

using namespace std;

int main() {
    int N, V;
    cin >> N >> V;
    vector<int> wegiht(N, 0);
    vector<int> val(N, 0);
    for(int i = 0;i < N;i++) {
        cin >> wegiht[i] >> val[i];
    }
    vector<int> dp(V + 1, 0);
    for(int i = 0;i < N;i++) {
        for(int j = wegiht[i];j <= V;j++) {
            dp[j] = max(dp[j], dp[j - wegiht[i]] + val[i]);
        }
    }
    cout << dp[V] << endl;
    return 0;
}

题目2:518. 零钱兑换 II - 力扣(LeetCode)

先物品再背包是组合,先背包再物品是排列

复制代码
class Solution {
public:
    int change(int amount, vector<int>& coins) {
        vector<int> dp(amount + 1, 0);
        dp[0] = 1;
        for(int i = 0;i < coins.size();i++) {
            for(int j = coins[i];j <= amount;j++) {
                dp[j] += dp[j - coins[i]];
            }
        }
        return dp[amount];
    }
};

题目3:377. 组合总和 Ⅳ - 力扣(LeetCode)

复制代码
class Solution {
public:
    int combinationSum4(vector<int>& nums, int target) {
        vector<int> dp(target + 1, 0);
        dp[0] = 1;
        for(int j = 0;j <= target;j++) {
            for(int i = 0;i < nums.size();i++) {
                if (j - nums[i] >= 0 && dp[j] < INT_MAX - dp[j - nums[i]]) {
                    dp[j] += dp[j - nums[i]];
                }
            }
            for(int j = 0;j <= target;j++) {
                cout << dp[j] << ",";
            }
            cout << "---------" << endl;
        }
        return dp[target];
    }
};
相关推荐
代码游侠1 分钟前
C语言核心概念复习(三)
开发语言·数据结构·c++·笔记·学习·算法
明洞日记7 分钟前
【软考每日一练030】软件维护:逆向工程与再工程的区别与联系
c++·软件工程·软考·逆向工程
池央8 分钟前
贪心算法-递增的三页子序列
算法·贪心算法
lrh1228008 分钟前
详解K近邻(KNN)算法:原理、实现与优化
算法·机器学习
郝学胜-神的一滴14 分钟前
深入Linux网络编程:accept函数——连接请求的“摆渡人”
linux·服务器·开发语言·网络·c++·程序人生
程途拾光15816 分钟前
算法公平性:消除偏见与歧视的技术探索
大数据·人工智能·算法
茉莉玫瑰花茶17 分钟前
C++ 17 详细特性解析(3)
开发语言·c++
秋风战士17 分钟前
无线通信算法之340:信道均衡除法定标讨论
算法·fpga开发·信息与通信
沧澜sincerely20 分钟前
蓝桥杯算法练习
算法·职场和发展·蓝桥杯
一起养小猫23 分钟前
Flutter for OpenHarmony 进阶:手势识别与碰撞检测算法深度解析
算法·flutter·harmonyos