当前位置: 首页 > article >正文

代码随想录算法训练营第三十八天-动态规划-完全背包-322. 零钱兑换

  • 太难了

  • 但听了前面再听这道题感觉递推公式也不是不难理解

  • 动规五部曲

    • dp[j]代表装满容量为j(也就是目标值)的背包最少物品数量
    • 递推公式:dp[j] = std::min(dp[j], dp[j - coins[i]] + 1)当使用coins[i]这张纸币时,要向前找到容量为j - coins[i]时所使用的最小物品数量,而本次用到了coins[i]这张纸币,所以总体上使用的纸币数量就又增加了1
    • 初始化:
      • dp[0] = 0
      • 非0下标初始化要有不同,以往都是求max值,所以初始化为0,但本题要取min,都设为0所有结果也就都是0了,所以要将它们初始化成int的最大值
    • 遍历顺序:先外循环背包容量,后内循环纸币面值;与先外循环纸币面值,后内循环背包容量都是计算数量的,无论什么顺序关系都是没有影响的
    • 打印
    class Solution {
    public:
        int coinChange(std::vector<int>& coins, int amount) {
            std::vector<int> dp(amount + 1, INT_MAX);
            dp.at(0) = 0;
            for (int i = 0; i < coins.size(); ++i) {
                for (int j = coins.at(i); j <= amount; ++j) {
                    if (dp[j - coins[i]] != INT_MAX) {
                        dp[j] = std::min(dp[j], dp[j - coins.at(i)] + 1);
                    }
                }
            }
            if (dp[amount] == INT_MAX) {
                return -1;
            }
            return dp[amount];
        }
    };
    
    • 汇总

http://www.kler.cn/a/522927.html

相关文章:

  • 【Pandas】pandas Series cummax
  • Autogen_core 测试代码:test_cache_store.py
  • SQL教程-基础语法
  • 基于特征工程与转换方法的LightGBM资产预测研究
  • 立创开发板入门ESP32C3第八课 修改AI大模型接口为deepseek3接口
  • 25美赛ABCDEF题详细建模过程+可视化图表+参考论文+写作模版+数据预处理
  • 思维练习题
  • 【Unity3D】实现2D小地图效果
  • 忘记宝塔的访问地址怎么找
  • 【教学类-89-02】20250128新年篇02——姓名藏头对联(星火讯飞+Python,五言对联,有横批)
  • 项目测试之MockMvc
  • 【数据结构与算法】九大排序算法实现详解
  • 中科大:LLM检索偏好优化应对RAG知识冲突
  • 面向对象设计原则 - SOLID原则 (基于C++)
  • [Dialog屏幕开发] 设置方式对话框
  • 使用eNSP配置GRE VPN实验
  • 基于51单片机和ESP8266(01S)、8X8点阵屏的二进制WiFi时钟
  • 什么是循环神经网络?
  • python.tkinter设计标记语言(渲染7-动态呈现标签) - 副本
  • 1.2第1章DC/DC变换器的动态建模-1.2Buck-Boost 变换器的交流模型--电力电子系统建模及控制 (徐德鸿)--读书笔记
  • game101 环节搭建 windows 平台 vs2022
  • doris:STRUCT
  • 【阅读笔记】New Edge Diected Interpolation,NEDI算法,待续
  • 跨域问题解释及前后端解决方案(SpringBoot)
  • 接口技术-第2次作业
  • Gradle配置指南:深入解析settings.gradle.kts(Kotlin DSL版)