day-44 代码随想录算法训练营(19) 动态规划 part 06

518.零钱兑换 ||

分析:还是没太懂
思路:
  • 1.dp存储,金额为j时,组合的方法有dpj
  • 2.dpj+=dpj-coins\[i] 只有加coninsi能达到金额j的都行
  • 3.全部初始化为0
  • 4.遍历顺序:外层遍历硬币,内层遍历金额
cpp 复制代码
class Solution {
public:
    int change(int amount, vector<int>& coins) {

        int n=coins.size();
        vector<int>dp(amount+1,0);
        dp[0]=1;
        for(int i=0;i<n;i++){
            for(int j=coins[i];j<=amount;j++){
                dp[j]+=dp[j-coins[i]];
            }
        }
        return dp[amount];
        
    }
};

377.组合总和IV

思路:
  • 1.dp存储:和为j,组成的组合有dpj
  • 2.dp+=dpj-nums\[i]
  • 3.dp0=1
  • 4.遍历顺序:外层遍历背包,内层遍历元素(排列)
cpp 复制代码
class Solution {
public:
    int combinationSum4(vector<int>& nums, int target) {
        int n=nums.size();
        vector<int>dp(target+1,0);
        dp[0]=1;
        for(int i=0;i<=target;i++){
            for(int j=0;j<n;j++){
                if(i>=nums[j] && dp[i]<=INT_MAX-dp[i-nums[j]]){
                    dp[i]+=dp[i-nums[j]];
                }
            }
        }
        return dp[target];
    }
};

70.爬楼梯进阶

思路:
  • 1.dp存储:第i阶楼梯,方法有dpi
  • 2.dpi+=dpi-nums\[j]
  • 3.初始化:dp0=1
  • 4.遍历顺序:1 2 和 2 1是不同的,所以是排列
cpp 复制代码
class Solution {
public:
    int climbStairs(int n) {
       vector<int>dp(n+1,0);
       dp[0]=1;
       int m=1;
       for(int i=1;i<=n;i++){
           for(int j=1;j<=m;j++){
               if(i>=j){
                   dp[i]+=dp[i-j];
               }
           }
       }
       return dp[n];
    }
};

322.零钱兑换

思路:
  • 1.dp存储:金额为j时,所用的最少硬币数dpj
  • 2.dpj=min(dpj,dpj-coins\[i]+1)
  • 3.初始化:dp0=1
  • 4.遍历顺序:组合,外层遍历硬币,内层遍历金额
cpp 复制代码
class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        vector<int>dp(amount+1,INT_MAX);
        dp[0]=0;
        for(int i=0;i<coins.size();i++){
            for(int j=coins[i];j<=amount;j++){
                if(dp[j-coins[i]]!=INT_MAX)
                    dp[j]=min(dp[j-coins[i]]+1,dp[j]);
            }
        }
        if(dp[amount]==INT_MAX) return -1;
        return dp[amount];
    }
};
相关推荐
a1117762 小时前
LM 算法迭代过程动画演示(SLAM)
算法
头茬韭菜2 小时前
Context 的生死抉择:四层压缩、截断算法与 Session Memory
算法·ai
Jerry2 小时前
LeetCode 541. 反转字符串 II
算法
Jerry2 小时前
LeetCode 344. 反转字符串
算法
搞科研的小刘选手3 小时前
【香港大学主办&IEEE出版】第六届计算机视觉、应用与算法国际学术会议(CVAA 2026)
算法·计算机视觉·应用·学术会议
Java小白笔记3 小时前
Codex config.toml配置实战指南
人工智能·算法·chatgpt·ai编程·集成学习
王老师青少年编程3 小时前
2026年6月GESP真题及题解(C++七级):消消乐
数据结构·c++·算法·真题·gesp·2026年6月
z小猫不吃鱼3 小时前
模型剪枝经典论文精读:Pruning Filters for Efficient ConvNets
算法·机器学习·剪枝
Fox爱分享5 小时前
字节二面:1000瓶酒,有一瓶是毒药,多少只老鼠可以查出来?
算法·面试·程序员
+wacyltd大模型备案算法备案5 小时前
大模型评估测试题库怎么建?风险分类、测试样本的完整方法
人工智能·算法·安全·分类·大模型·大模型备案·大模型上线登记