322力扣:零钱兑换

DP:

cpp 复制代码
class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        int n=coins.size();
        vector<int> dp(amount+1,-1);
        dp[0]=0;
        for(int i=1;i<=amount;i++){
            for(int j=0;j<n;j++){
                if(i-coins[j]>=0 && dp[i-coins[j]]>=0){
                    int res=dp[i-coins[j]]+1;
                    if(dp[i]==-1 || dp[i]>res)
                    dp[i]=res;
                }
            }
        }
        return dp[amount];
    }
};

记忆化与回溯:

cpp 复制代码
class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        vector<int> count(amount+1,0);
        function<int(int)> dfs=[&](int amount){
            int Min=INT_MAX;
            if(amount==0) return 0;
            if(amount<0) return -1;
            if(count[amount]!=0) return count[amount];
            for(auto num:coins){
                if(dfs(amount-num)==-1) continue;
                if(dfs(amount-num)<Min)
                Min=dfs(amount-num)+1;
            }
            count[amount]=Min==INT_MAX?-1:Min;
            return count[amount];
        };
        return dfs(amount);;
    }
};
相关推荐
sheeta19982 小时前
LeetCode 每日一题笔记 日期:2025.11.24 题目:1018. 可被5整除的二进制前缀
笔记·算法·leetcode
gfdhy8 小时前
【c++】哈希算法深度解析:实现、核心作用与工业级应用
c语言·开发语言·c++·算法·密码学·哈希算法·哈希
百***06018 小时前
SpringMVC 请求参数接收
前端·javascript·算法
一个不知名程序员www9 小时前
算法学习入门---vector(C++)
c++·算法
云飞云共享云桌面9 小时前
无需配置传统电脑——智能装备工厂10个SolidWorks共享一台工作站
运维·服务器·前端·网络·算法·电脑
福尔摩斯张9 小时前
《C 语言指针从入门到精通:全面笔记 + 实战习题深度解析》(超详细)
linux·运维·服务器·c语言·开发语言·c++·算法
橘颂TA9 小时前
【剑斩OFFER】算法的暴力美学——两整数之和
算法·leetcode·职场和发展
Dream it possible!10 小时前
LeetCode 面试经典 150_二叉搜索树_二叉搜索树的最小绝对差(85_530_C++_简单)
c++·leetcode·面试
xxxxxxllllllshi10 小时前
【LeetCode Hot100----14-贪心算法(01-05),包含多种方法,详细思路与代码,让你一篇文章看懂所有!】
java·数据结构·算法·leetcode·贪心算法
前端小L10 小时前
图论专题(二十二):并查集的“逻辑审判”——判断「等式方程的可满足性」
算法·矩阵·深度优先·图论·宽度优先