【问题描述】
将 2019 拆分为若干个两两不同的完全平方数之和,一共有多少种不同的方法?
注意交换顺序视为同一种方法,例如 132 + 252 + 352 = 2019 与 132 + 352 + 252 = 2019 视为同一种方法。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
DFS
直接打暴力有点慢,Python大概跑了两三分钟,但无所谓,填空题嘛,能暴力出来就懒得动脑子了。
Python
def dfs(num, minn, maxn):
if num < 0:
return
if num == 0:
global ans
ans += 1
return
for i in range(minn, maxn + 1):
dfs(num - i ** 2, i + 1, maxn)
ans = 0
dfs(num=2019, minn=1, maxn=45)
print(ans)
Answer:26287
如果完全平方数包括0的话,结果需要乘2,也就是52574。