完全平方数-动态规划

35 阅读1分钟
// 完全平方数-动态规划  
// 给你一个整数 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];  
}