f[i][j]表示 j 个完全平方数能否组合成 i ,通过递推进行判断。
279. 完全平方数
class Solution {
public:
int numSquares(int n) {
int tip=1;
while (tip*tip<=n){
tip++;
}
bool f[n+5][105];
memset(f,false,sizeof(f));
tip--;
int tot=0;
f[0][0]=true;
while (!f[n][tot]){
tot++;
for (int i=1;i<=n;i++){
for (int j=1;j<=tip;j++){
if (i>=j*j){
if (f[i-j*j][tot-1]) f[i][tot]=true;
}
}
}
}
return tot;
}
};