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);;
    }
};
相关推荐
CHANG_THE_WORLD21 小时前
并发编程指南 同步操作与强制排序
开发语言·c++·算法
gaoshou451 天前
代码随想录训练营第三十一天|LeetCode56.合并区间、LeetCode738.单调递增的数字
数据结构·算法
自信的小螺丝钉1 天前
Leetcode 240. 搜索二维矩阵 II 矩阵 / 二分
算法·leetcode·矩阵
KING BOB!!!1 天前
Leetcode高频 SQL 50 题(基础版)题目记录
sql·mysql·算法·leetcode
我是渣哥1 天前
Java String vs StringBuilder vs StringBuffer:一个性能优化的探险故事
java·开发语言·jvm·后端·算法·职场和发展·性能优化
THMAIL1 天前
机器学习从入门到精通 - 机器学习调参终极手册:网格搜索、贝叶斯优化实战
人工智能·python·算法·机器学习·支持向量机·数据挖掘·逻辑回归
lytk991 天前
矩阵中寻找好子矩阵
线性代数·算法·矩阵
珊瑚怪人1 天前
算法随笔(一)
算法
晚安里1 天前
JVM相关 4|JVM调优与常见参数(如 -Xms、-Xmx、-XX:+PrintGCDetails) 的必会知识点汇总
java·开发语言·jvm·后端·算法
THMAIL1 天前
机器学习从入门到精通 - 集成学习核武器:随机森林与XGBoost工业级应用
人工智能·python·算法·随机森林·机器学习·集成学习·sklearn