Perfect Squares

来源:互联网 发布:mt4外汇交易系统源码 编辑:程序博客网 时间:2024/05/24 07:20

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

Example

Given n = 12, return 3 because 12 = 4 + 4 + 4
Given n = 13, return 2 because 13 = 4 + 9

Tags 
class Solution {public:    /**     * @param n a positive integer     * @return an integer     */    int numSquares(int n) {        // Write your code here                vector<int> dp(n+1, n);                dp[0] = 0;        dp[1] = 1;        dp[2] = 2;                for (int i=3; i<=n; i++)        {            int k = 0;            while (i - (k * k) >= 0)            {                int power = k*k;                if (dp[i-power] + 1 < dp[i])                {                    dp[i] = dp[i-power] + 1;                }                k++;            }        }                return dp[n];    }};


原创粉丝点击