多重背包问题,物品价值和INT_MAX重量都是coins[i],amount是背包容量,求装满这个背包所需要的物品个数最少是多少
dp初始化:背包容量为0时,组合数为0,dp[0]=0;由于每次都取最小,那么其余值初始化为INT_MAX
cpp
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
int n=coins.size(),bagWeight=amount;
vector<int> dp(bagWeight+1,INT_MAX);
dp[0]=0;
for(int i=0;i<n;i++)
for(int j=coins[i];j<=bagWeight;j++)
if(dp[j-coins[i]]!=INT_MAX)
dp[j]=min(dp[j],dp[j-coins[i]]+1);
if(dp[bagWeight]==INT_MAX)
return -1;
else
return dp[bagWeight];
}
};