LeetCode 279. Perfect Squares 题解

来源:互联网 发布:遗传算法的优缺点 编辑:程序博客网 时间:2024/06/14 08:14

279. Perfect Squares

 
 My Submissions

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.

解题思路:

本题使用动态规划解法。由于

ans[i]=ans[i-j*j]+1//可遍历所有j(j*j<=i),从中选出ans[i-j*j]的解,由此可推出ans[i]的最优解。详见代码

代码展示:

class Solution {public:    int numSquares(int n) {        int ans[n+3]={0};        ans[1]=1;        for(int i=2;i<=n;i++)        {            int j= 1;            int min_ans=INT_MAX;            while(j*j<=i)            {                if(j*j==i)                {                    //如果i为完全平方数,则ans[i]=1;                    min_ans=1;                    break;                }                //ans[i]=ans[i-j*j]+1,从中选出最小的解                min_ans=min(min_ans,ans[i-j*j]+1);                j++;            }            ans[i]=min_ans;        }        return ans[n];            }};


0 0
原创粉丝点击