给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...
)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。
初始思路: 给定一个数比如1300,1300下一步分解就有 int( 1300**(0.5) +1) 种选择,再下一步又有很多种选择,这样自顶向下的分解方法无疑是不可行的。
dp思路,从底向上推,从1-1300 每一步的最小步数都存在dp中,这样可以避免很多重复计算。
dp = [ for i in range( n + 1) ]
代码:
原文:https://www.cnblogs.com/ChevisZhang/p/12352985.html