题解 | 最少的完全平方数 Python3

最少的完全平方数

https://www.nowcoder.com/practice/4b2f5d4c00f44a92845bdad633965c04

# 16:58

import sys
import math
# dp[i]: 数为i时的最小个数完全平方数
# dp[i] = 1 if i等于某个平方数, else dp[i] = min(dp[i-k] + 1, k 为某个平方数,dp[i]的最小值肯定是dp[i-某个平方数]+1,因此可以把k限制在平方数的个数上

# 为了加速,

n = int(input())
candidates = []
m = 1
max_num = 10**4
dp = [max_num+1] * (n+1)
while m*m <= n:
    candidates.append(m*m)
    dp[m*m] = 1
    m+=1

for i in range(1,n+1):
    for k in candidates:
        dp[i] = min(dp[i],dp[i-k] + 1)
print(dp[-1])

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务