yq—2024/5/29—零钱兑换


代码实现:

cpp 复制代码
#define min(a, b) ((a) > (b) ? (b) : (a))

int coinChange(int *coins, int coinsSize, int amount) {
    int dp[amount + 1];
    // 初始化
    for (int i = 0; i < amount + 1; i++) {
        dp[i] = INT32_MAX;
    }
    dp[0] = 0;
    // 01背包 -----先遍历物品,再遍历背包
    // for (int i = 0; i < coinsSize; i++) { // 遍历物品
    //     for (int j = coins[i]; j <= amount; j++) { // 遍历背包
    //         if (dp[j - coins[i]] != INT32_MAX) { // 如果dp[j - coins[i]]是初始值则跳过
    //             dp[j] = min(dp[j - coins[i]] + 1, dp[j]);
    //         }
    //     }
    // }

    // 01背包 -----先遍历背包,再遍历物品
    for (int j = 0; j <= amount; j++) { // 遍历背包
        for (int i = 0; i < coinsSize; i++) { // 遍历物品
            if (j >= coins[i] && dp[j - coins[i]] != INT32_MAX) { // 如果dp[j - coins[i]]是初始值则跳过
                dp[j] = min(dp[j - coins[i]] + 1, dp[j]);
            }
        }
    }
    if (dp[amount] == INT32_MAX) {
        return -1;
    }
    return dp[amount];
}
相关推荐
longlongzihan8 小时前
链表找环:Floyd 判圈算法(LeetCode 141 & 142 )
c++·算法·leetcode·链表
yi0118 小时前
LeetCode 643. 子数组最大平均数 I|从暴力枚举到滑动窗口
人工智能·笔记·python·算法·leetcode·滑动窗口
java_nnnn10 小时前
LeetCode刷题双指针(有效三角形的个数+三数之和)Java
算法·leetcode·职场和发展
All for pursuit.11 小时前
【动态规划-6】96.不同的二叉搜索树
数据结构·c++·算法·leetcode·动态规划
All for pursuit.13 小时前
【并查集-2】399.除法求值
数据结构·c++·算法·leetcode
Nil20814 小时前
leetcode 416分割等和子集
算法·leetcode·职场和发展
y1su17 小时前
Leetcode 二分模板
java·数据结构·算法·leetcode·排序算法
Pniubi18 小时前
力扣55跳跃游戏(贪心)
算法·leetcode·游戏
CoderYanger20 小时前
A.每日一题:856. 括号的分数
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
All for pursuit.20 小时前
【动态规划-8】152.乘积最大子数组
数据结构·c++·算法·leetcode·动态规划