一个数可以写几个数的平方数,最少的平方的个数
解题思路:动态规划 dp[i]=min(dp[i-j*j]+1) j=1,2,..m m=sqrt(i)
public static void main(String[] args) {
int num=12;
int i = numSquares(num);
System.out.println(i);
}
public static int numSquares(int n) {
int m=(int)Math.sqrt(n);
int[] arr=new int[n+1];
arr[0]=0;
arr[1]=1;
for(int i=1;i<=n;i++){
int min=Integer.MAX_VALUE;
for(int j=1;j<=m;j++){
if(j*j<=i){
min=Math.min(min,arr[i-j*j]+1);
}
}
arr[i]=min;
}
return arr[n];
}