问题描述:
分析:
对于任意正整数n,其可表示为:
代码为:
class Solution {
public int numSquares(int n) {
int[] f = new int[n+1];
f[0]=0;
for(int i=1;i<=n;i++) {
f[i]=i;//极端情况,即i只由数字1构成和,此时个数最多,但也在未知情况下最少
for(int j=1;j*j<=i;j++) {
f[i] = Math.min(f[i], f[i-j*j]+1);
}
}
return f[n];
}
}
系统提交结果为: