给一个正整数 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]
注:运行内存超过限制,待优化(划分型动态规划)