1.0 KiB
1.0 KiB
// 计算有多少种方式 // 完全背包 for循环的顺序啊,先是哪个for 后是哪个for定不下来
排列
class Solution {
public:
int change(int amount, vector<int>& coins) {
int dp[50001] = {0};
dp[0] = 1;
for (int i = 0; i <= amount; i++) {
for (int j = 0; j < coins.size(); j++) { // 这是组合把???
if (i - coins[j] >= 0) dp[i] += dp[i - coins[j]];
}
for (int j = 0; j <= amount; j++) {
cout << dp[j] << " ";
}
cout << endl;
}
return dp[amount];
}
};
这个才是组合,本题的题解,
class Solution {
public:
int change(int amount, vector<int>& coins) {
int dp[50001] = {0};
dp[0] = 1;
for (int i = 0; i < coins.size(); i++) { // 一个钱币只在序列里出现一次
for (int j = 0; j <= amount; j++) {
if (j - coins[i] >= 0) dp[j] += dp[j - coins[i]];
}
}
return dp[amount];
}
};