代码随想录算法训练营第44天|动态规划:完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ

动态规划:完全背包理论基础

518.零钱兑换II

https://leetcode.cn/problems/coin-change-ii/

用一个二维dp数组

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

用一维

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

377. 组合总和 Ⅳ

https://leetcode.cn/problems/combination-sum-iv/

cpp 复制代码
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] && dp[j] < INT_MAX - dp[j - nums[i]]) {
                    dp[j] += dp[j - nums[i]];
                }
            }
        }
        return dp[target];
    }
};
相关推荐
敲代码的瓦龙36 分钟前
西邮移动应用开发实验室2025年二面题解
开发语言·c++·算法
RTC老炮44 分钟前
webrtc弱网-RembThrottler类源码分析及算法原理
网络·算法·webrtc
野蛮人6号1 小时前
力扣热题100道之73矩阵置零
算法·leetcode·矩阵
野蛮人6号1 小时前
力扣热题100道之238除自身以外数组的乘积
算法·leetcode·职场和发展
坚持编程的菜鸟1 小时前
LeetCode每日一题——缀点成线
c语言·算法·leetcode
派大星爱吃猫1 小时前
直接插入排序详解
算法·排序算法·直接插入排序
一只侯子2 小时前
Tuning——CC调试(适用高通)
开发语言·图像处理·笔记·学习·算法
csdn_aspnet2 小时前
直圆锥(Right Circular Cone)
算法·圆锥
JJJJ_iii2 小时前
【机器学习07】 激活函数精讲、Softmax多分类与优化器进阶
人工智能·笔记·python·算法·机器学习·分类·线性回归
天若有情6732 小时前
TFword:从字符到片段,解析一个“小而精”的字符串处理工具的设计智慧
java·jvm·算法