64,691
社区成员
发帖
与我相关
我的任务
分享
class Solution {
vector<int>count;
int dp(vector<int>& coins, int rem) {
if (rem < 0) return -1;
if (rem == 0) return 0;
if (count[rem - 1] != 0) return count[rem - 1];
int Min = INT_MAX;
for (int coin : coins) {
int res = dp(coins, rem - coin);
if (res >= 0 && res < Min) {
Min = res + 1;
}
}
count[rem - 1] = Min == INT_MAX ? -1 : Min;
return count[rem - 1];
}
public:
int coinChange(vector<int>& coins, int amount) {
if (amount < 1) return 0;
count.resize(amount);
return dp(coins, amount);
}
};
int main()
{
Solution t;
vector<int> v={ 2,5,50,100 }; //就是这组数据,删掉2,5或者把需要凑得钱数调小些的画就不会有问题。
cout << t.coinChange(v, 15646) << endl;
}