322. Coin Change(C++实现)
来源:互联网 发布:淘宝如何预约快递 编辑:程序博客网 时间:2024/05/22 05:11
递归算法:
class Solution { int *dp; vector<int> a; int dfs(int S) { if(dp[S]!=-2) return dp[S]; int ans=-1; for(int i=0;i<a.size();i++) { const int w=a[i]; if(S<w) continue; int tmp=dfs(S-w); if(tmp!=-1) { tmp+=1; if(ans==-1||ans>tmp) ans=tmp; } } return dp[S]=ans; } public: int coinChange(vector<int>& coins, int amount) {if(amount==0)return 0;dp=new int[amount+1];for(int i=0;i<=amount;i++) dp[i]=-2;dp[0]=0;a=coins;return dfs(amount); }};
动态规划算法:
class Solution {public:int coinChange(vector<int>& coins, int amount) {if(amount==0)return 0;const int n=coins.size();int *dp=new int[amount+1];memset(dp,-1,sizeof(int)*(amount+1));dp[0]=0;for(int i=0;i<n;i++){const int w=coins[i];for(int i=amount;i>=0;i--) if(dp[i]!=-1){for(int j=1;i+j*w<=amount;j++){int k=i+j*w;if(dp[k]==-1||dp[k]>dp[i]+j) dp[k]=dp[i]+j;}}}return dp[amount];}};
0 0
- 322. Coin Change(C++实现)
- [leetcode] 322. Coin Change
- leetcode 322. Coin Change
- Leetcode 322. Coin Change
- Leetcode 322. Coin Change
- 322. Coin Change
- 322. Coin Change LeetCode
- 322. Coin Change
- 322. Coin Change
- LeetCode *** 322. Coin Change
- 322. Coin Change
- LeetCode 322. Coin Change
- 322. Coin Change
- leetcode 322. Coin Change
- 322. Coin Change
- LeetCode-322.Coin Change
- Leetcode 322. Coin Change
- 322. Coin Change
- win7 F1指示灯老是亮着的解决方法
- iOS代理
- 基于Linux 文件IO的聊天室开发
- C++ hashmap
- JAVA文档、中文版、英文版、chm
- 322. Coin Change(C++实现)
- android studio 快捷键(持续更新)
- 《21天学通C++》_3 2016.5.24
- 带你认识C++中的this指针
- 我的悲催
- 大小为n的搜索树的个数
- JSP04
- 优化CSS样式
- 数据库中的常用函数