class Solution {
public int numSquares(int n) {
//f[i]->和为i的完全平方数的最小个数
//f[i] = min(f[i - j*j]) + 1;其中 1=<j*j<=i;
//初始化f大小未n+1,令f[0] = 0以便计算
int[] f = new int[n+1];
for(int i = 1;i <= n;i++){
int minNum = Integer.MAX_VALUE;
for(int j = 1;j*j <= i;j++)
minNum = Math.min(minNum,f[i - j*j]);
f[i] = minNum + 1;
}
return f[n];
}
}