题目:
思路:
这一题和硬币那题有一点像。 (13条消息) LeetCode322.Coin-Change<零钱兑换>_Eminste的博客-CSDN博客
所以我们初始化一系列“硬币”(平方数) 然后扫描用多少个“硬币”可以组成值。
最后返回结果即可。
代码是:
//code
class Solution {
public:
int numSquares(int amount) {
int coins[101]={0};
for(int i=1;i<101;i++){
coins[i]=i*i;
}
vector<int> dp(amount + 1, amount + 1);
dp[0] = 0;
for (int i = 0; i < dp.size(); i++) {
for (int coin : coins) {
if (i - coin < 0) continue;
dp[i] = min(dp[i], 1 + dp[i - coin]);
}
}
return (dp[amount] == amount + 1) ? -1 : dp[amount];
}
};