• 完全平方数


    题目描述:

    给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

    示例 1:

    输入: n = 12
    输出: 3 
    解释: 12 = 4 + 4 + 4.

    示例 2:

    输入: n = 13
    输出: 2
    解释: 13 = 4 + 9.

    动态方程为:

    定义一个函数f(n)表示我们要求的解。f(n)的求解过程为:
     f(n) = 1 + min{
    f(n-1^2), f(n-2^2), f(n-3^2), f(n-4^2), ... , f(n-k^2) //(k为满足k^2<=n的最大的k)

    代码如下:
    /**
         * 定义一个函数f(n)表示我们要求的解。f(n)的求解过程为:
         * f(n) = 1 + min{
         *   f(n-1^2), f(n-2^2), f(n-3^2), f(n-4^2), ... , f(n-k^2) //(k为满足k^2<=n的最大的k)
         * }
         * @param n
         * @return
         */
        public static int numSquares(int n){
            int[] dp = new int[n+1];
            for(int i = 1;i<=n;i++){
                int tmp = Integer.MAX_VALUE;
                for(int j = 1;j * j<=i;j++){
                    tmp = Math.min(tmp,dp[i-j*j]);
                }
                dp[i] = tmp + 1;
            }
            return dp[n];
        }
  • 相关阅读:
    招标问什么
    其他房产
    长沙
    flume kafka
    http://www.zhihu.com/question/24301047
    38.NOW() 函数
    35.MID() 函数
    36.LEN() 函数
    34.UCASE() LCASE() 函数
    33.HAVING 子句
  • 原文地址:https://www.cnblogs.com/du001011/p/10952281.html
Copyright © 2020-2023  润新知