目录 1、题目描述 2、代码实现 3、运行结果 1、题目描述 给一个正整数 n, 请问最少多少个完全平方数(比如1, 4, 9... )的和等于 n。 输入样例①:12 输出样例:
目录
1、题目描述
2、代码实现
3、运行结果
1、题目描述
给一个正整数 n, 请问最少多少个完全平方数(比如1, 4, 9 ... )的和等于 n。
输入样例①:12
输出样例:3
解释:4+4+4
输入样例②:13
输出样例:2
解释:4+9
2、代码实现
"""-*- coding:utf-8 -*-
Author:yang-roc
QQ:327844461
Email:aida_pc@qq.com
Time: 2020/12/29
"""
def fun(n):
squares = []
j = 1
while j * j <= n:
squares.append(j * j)
j += 1
level = 0
queue = [n]
while queue:
level += 1
temp = []
visited = [False] * (n + 1)
for q in queue:
for factory in squares:
if q - factory == 0:
return level
if q - factory < 0:
break
if visited[q - factory]:
continue
temp.append(q - factory)
visited[q - factory] = True
queue = temp
return level
if __name__ == '__main__':
print(fun(12))
print(fun(13))
3、运行结果
32