题解:求平方和等于n的数的最小个数
思路:动态规划解决
状态转移方程:dp[i+j*j]==min(dp[i+j*j],dp[i]+1);
class Solution {
public:
int numSquares(int n) {
vector<int> num(n+1,INT_MAX);
for(int i=1;i*i<=n;i++){
num[i*i]=1;
}
for(int i=1;i<=n;i++){
for(int j=1;i+j*j<=n;j++){
num[i+j*j]=min(num[i+j*j],num[i]+1);
}
}
return num[n];
}
};