Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...
) which sum to n.
For example, given n = 12
, return 3
because 12 = 4 + 4 + 4
; given n = 13
, return 2
because 13 = 4 + 9
.
Credits:
Special thanks to for adding this problem and creating all test cases.
AC代码:
class Solution
{
public:
int numSquares(int n)
{
int least[n+1];
memset(least,0,sizeof(least));
for(int i=1;i<=n;++i)
{
least[i]=i;
for(int j=1;j*j<=i;++j)
{
if(j*j==n)
least[i]=1;
else
least[i]=least[i-j*j]+1<least[i]?least[i-j*j]+1:least[i];
}
}
return least[n];
}
};
因篇幅问题不能全部显示,请点此查看更多更全内容