// 完全平方数-动态规划
// 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。
// 输入:n = 12
// 输出:3
// 解释:12 = 4 + 4 + 4
public static int numSquares(int n){
int[] f=new int[n+1];
for (int i = 1; i <=n ; i++) {
//f[i]最大为所有的数都是1
f[i]=i;
for (int j = 1; j*j <=i ; j++) {
//需要多少个数的平方构成f[i]
//[i-j*j]已经取列j,还要i-j*j
f[i]=Math.min(f[i],f[i-j*j]+1);
}
}
return f[n];
}