*Perfect Squares

Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n.

Example 1:

Input: n =
12

Output: 3
Explanation:
12 = 4 + 4 + 4.
Example 2:

Input: n =
13

Output: 2
Explanation:
13 = 4 + 9.

class Solution{
public:
    int numSquares(int n){
        vector<int> memo(n+1,n);
        if(n == 1) return 1;
        memo[0] = 0;
        memo[1] = 1;
        for(int i = 2; i <= n; i++){
            for(int j = 1; j*j <= i; j++){
                memo[i] = min(memo[i],memo[i-j*j]+1);
            }
        }
        return memo[n];
    }
};

参考:

1,https://blog.csdn.net/u013250416/article/details/80558542

怕什么真理无穷,进一寸有一寸的欢喜。---胡适
原文地址:https://www.cnblogs.com/hujianglang/p/12222319.html