class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
// dp[i] 到达钱数i 最小的次数
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<coins.size();++j){
if(i>=coins[j]){
dp[i] = min(dp[i],dp[i-coins[j]]+1);
}
}
}
return dp[amount]==Max?-1:dp[amount];
}
int countWays(vector<int> penny, int n, int aim) {
// write code here
int f[1000]; // aim 小于1000
memset(f,0,sizeof(f)); f[0] = 1;
for(int i = 0;i < n;++ i)
for(int j = penny[i];j <= aim;++ j)
f[j] += f[j - penny[i]];
return f[aim];
}
};
coin change 到达amoumt最少货币 和到达此amount的种数量 找零钱
最新推荐文章于 2024-03-27 21:00:00 发布