513. 完美平方

513. 完美平方

中文English

给一个正整数 n, 请问最少多少个完全平方数(比如1, 4, 9...)的和等于n。

样例

样例 1:

输入: 12
输出: 3
解释: 4 + 4 + 4

样例 2:

输入: 13
输出: 2
解释: 4 + 9
输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
    """
    @param n: a positive integer
    @return: An integer
    """
    '''
    大致思路:
    1.划分型动态规划
    '''
    def numSquares(self, n):

        #初始化
        dp = [sys.maxsize for _ in range(n + 1)] 
        dp[0] = 0

        for i in range(1,n + 1):
            for j in range(1,i + 1):
                if (i - j*j) >= 0:
                    dp[i] = min(dp[i], dp[i - j*j] + 1)
        
        return dp[n]

注:运行内存超过限制,待优化(划分型动态规划)

 

posted @ 2020-06-08 22:41  风不再来  阅读(137)  评论(0编辑  收藏  举报