(M)Dynamic Programming:279. Perfect Squares

来源:互联网 发布:js数组指定位置替换 编辑:程序博客网 时间:2024/06/07 08:54

这个题不难想方法,列出n=12的情况就可以看出递归关系。

但是用到了判断一个数是不是完全平方数的方法,还有INT_MAX那里,一开始初始化为1,发现不对。

判断是不是平方数,一开始我写的是:

if(sqrt(i) * sqrt(i) == i),后来发现不对,在i=11的时候出错。

class Solution {public:    int numSquares(int n) {        vector<int> dp(n + 1, INT_MAX);        for(int i = 1; i < n + 1; ++i)        {            double x = sqrt(i);            if(floor(x + 0.5) == x)            {                dp[i] = 1;                continue;            }            int j = 1;            while(i - j*j > 0)            {                dp[i] = min(dp[i], dp[i - j*j] + 1);                j++;            }        }        return dp[n];    }};


原创粉丝点击