学习要点
- 完全背包组合问题
题目链接
题目描述

解法:完全背包组合
cpp
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
// dp[j] = min(dp[j],dp[j - nums[i]] + 1)要讨论
// 初始化
vector<uint64_t> dp(amount+1,-1);
dp[0] = 0;
for(int i = 0;i<coins.size();i++)
{
for(int j = 0;j<=amount;j++)
{
if(j >= coins[i])
{
int a = dp[j];
int b = dp[j - coins[i]];
int c;
if(b == -1)
{
c = -1;
}
else
{
c = b + 1;
}
if( a == -1)
{
dp[j] = c;
}
else if( c == -1)
{
dp[j] = a;
}
else
{
dp[j] = min(a,c);
}
}
}
}
return dp[amount];
}
};