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

322 零钱兑换

步骤1:定义状态数组

定义 dp[i] 表示组成金额 i 所需的最少硬币数。

步骤2:状态转移方程

对于每个硬币 coin 和金额 i,若 coin ≤ i,则尝试用该硬币更新状态

逻辑解释:若用 coin 面额硬币,则当前最少硬币数为 dp[i - coin] + 1(加1表示使用这枚硬币)

步骤3:遍历顺序

采用外层遍历硬币,内层遍历金额的正序填充方式(完全背包特性)

遍历顺序说明:完全背包问题中,每个硬币可以重复使用,因此内层循环正序更新。

步骤4:处理结果

最终检查目标金额是否可达

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        if (amount == 0) return 0;
        vector<int> dp(amount + 1, INT_MAX);
        dp[0] = 0;

        for (auto coin : coins) {
            for (int i = coin; i <= amount; ++i) {
                if (dp[i - coin] != INT_MAX) {
                    dp[i] = min(dp[i - coin] + 1, dp[i]);
                }
            }
        }
        return dp[amount] == INT_MAX ? -1 : dp[amount];
    }
};

http://www.dtcms.com/a/92438.html

相关文章:

  • 【大模型基础_毛玉仁】4.4 低秩适配方法
  • RocketMQ 4.x、5.x 性能对比
  • 绩效考核如何从形式化任务升级为公司战略工具?
  • 2025.3.25
  • 基于CondLaneNet论文和全卷积分割头的车道线head设计
  • QML输入控件: Dial基本用法与样式定制(1)
  • 【机器学习】imagenet2012 数据预处理数据预处理
  • K8S学习之基础五十二:k8s配置jenkins
  • Vite 与 Nuxt 深度对比分析
  • 软件设计模式-第一章
  • 数据源为postgres的多表关联flink开发需求,开发思路
  • jmeter通过json提取器获取接口返回token(超详细)
  • 3.1.2 内存池
  • Java.util包之Java.util.List接口
  • 【msyql】LInux安装Mysql
  • kubernetes高级应用之初始化容器
  • 第 6 章 | 区块链预言机操控与闪电贷攻击全解析
  • 数据结构之队列的链式结构-初始化-判断队列是否为空-入队-出队-获取队头元素
  • 八目导航 version:1.2
  • Linux 中进程的 nice 值对程序的占用的影响测试
  • 边缘计算 vs. 云计算,谁才是工业物联网的未来?
  • Matlab Hessian矩阵计算(LoG算子)
  • Django 生成 ssl 安全证书,切换 https、wss协议(daphne 、nginx)
  • C++之哈希
  • kubectl 命令参数详解与示例
  • 数据库DBA认证,选哪个认证合适?
  • Git撤回操作全场景指南:未推送与已推送,保留和不保留修改的差异处理
  • 解决PHP内存溢出问题的讨论和分析
  • 通过git文件查看大模型下载链接的解决方案
  • 【Qt】Ubuntu22.04使用命令安装Qt5和Qt6