【LeetCode热题100】【动态规划】零钱兑换

题目链接:322. 零钱兑换 - 力扣(LeetCode)

要拿硬币凑钱,硬币无限多,就是完全背包问题,定义dp[i]是要凑的钱i的硬币数,对于当前硬币来说,如果选择了这个硬币,要么要凑的硬币数就变成dp[i-coin]

复制代码
class Solution {
public:
    int coinChange(vector<int> &coins, int amount) {
        vector<int> dp(amount + 1,INT_MAX / 2);
        dp[0] = 0;
        for (auto &coin: coins)
            for (int i = coin; i <= amount; ++i)
                dp[i] = min(dp[i], dp[i - coin] + 1);
        return dp[amount] == INT_MAX / 2 ? -1 : dp[amount];
    }
};
相关推荐
leoufung20 小时前
LeetCode 149: Max Points on a Line - 解题思路详解
算法·leetcode·职场和发展
样例过了就是过了20 小时前
LeetCode热题100 最长公共子序列
c++·算法·leetcode·动态规划
HXDGCL20 小时前
矩形环形导轨:自动化循环线的核心运动单元解析
运维·算法·自动化
谭欣辰20 小时前
C++ 排列组合完整指南
开发语言·c++·算法
代码中介商20 小时前
银行管理系统的业务血肉 —— 流程、状态机、输入校验与持久化(下篇)
c语言·算法
foundbug99921 小时前
自适应滤除直达波干扰的MATLAB实现
开发语言·算法·matlab
CN-Dust1 天前
【C++】while语句例题专题
数据结构·c++·算法
灵智实验室1 天前
PX4位置速度估计技术详解(四):LPE 激光雷达高度融合的实现错误
算法·无人机·px 4
CQU_JIAKE1 天前
【A】3742,3387,并查集
算法
gihigo19981 天前
CHAN时延估计算法(二维/三维定位实现)
算法