题目名称
Perfect Squares—LeetCode链接
描述
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.
分析
可以用动态规划来解这道题。
C++代码
class Solution {
public:
int numSquares(int n) {
if(n<=0)
return 0;
vector<int> cnt(n+1,INT_MAX);
cnt[0] = 0;
for(int i=1;i<=n;i++) {
for(int j=1;j*j<=i;j++) {
cnt[i] = min(cnt[i],cnt[i-j*j]+1);
}
}
return cnt.back();
}
};
总结
多多积累动态规划的题目。