我是靠谱客的博主 傻傻水杯,最近开发中收集的这篇文章主要介绍【LeetCode刷题笔记-86 322:零钱兑换(动态规划)】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目:
在这里插入图片描述
这道题我是使用动态规划做的,只不过代码写的没有答案简洁。

这题思路还是很清晰的。

对于每一个金额,都会去枚举去掉CONIS数组里的某个金额所需要的总数

比如1,3,5,目标为11

遍历到7时,就会去比较F(6)+1,F(4)+1,F(2)+1,看由哪条路线构成当前金额用的最少。

递推公式为:j用来列举conis数组里的元素
dp[i] = min(dp[i],dp[i-coins[j]]+1);

C++代码(附带测试):

#include<iostream>
#include<Math.h>
#include<algorithm>
#include<vector> 


using namespace std;

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
    	int n = amount +1;
    	int dp[n];
    	for(int i=0;i<=amount;i++){//如果在上一行初始化这样只会让第一个值为amount+1,其它为0,所以要使用循环赋值 
    		dp[i] = n; 
		}
    	
    	dp[0] = 0;
    	for(int j=0;j<coins.size();j++){
    		if(coins[j]<=amount){//只初始化在范围内的值 
    			dp[coins[j]] = 1;
			}
		} 
    	
		for(int i=0;i<=amount;i++){
			for(int j=0;j<coins.size();j++){
				if(i-coins[j]>0){
					dp[i] = min(dp[i],dp[i-coins[j]]+1);
				}
			}
		}
		
		if(dp[amount] > amount){
			return -1;
		}else{
			return dp[amount];
		}
    }
};


//题解的代码太简洁优雅了,不像我的一堆判定条件 
//class Solution { 
//public:
//    int coinChange(vector<int>& coins, int amount) {
//        int Max = amount + 1;
//        vector<int> dp(amount + 1, Max);
//        dp[0] = 0;
//        for (int i = 1; i <= amount; ++i) {
//            for (int j = 0; j < (int)coins.size(); ++j) {
//                if (coins[j] <= i) {
//                    dp[i] = min(dp[i], dp[i - coins[j]] + 1);
//                }
//            }
//        }
//        return dp[amount] > amount ? -1 : dp[amount];
//    }
//};
//
//作者:LeetCode-Solution
//链接:https://leetcode-cn.com/problems/coin-change/solution/322-ling-qian-dui-huan-by-leetcode-solution/
//来源:力扣(LeetCode)
//著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

int main(){
	vector<int> coins = {1};
	int amount = 1;
	Solution solution;
	cout<<solution.coinChange(coins,amount); 
}

最后

以上就是傻傻水杯为你收集整理的【LeetCode刷题笔记-86 322:零钱兑换(动态规划)】的全部内容,希望文章能够帮你解决【LeetCode刷题笔记-86 322:零钱兑换(动态规划)】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部