关闭

Perfect Squares

标签: c++
125人阅读 评论(0) 收藏 举报
分类:

1.问题描述

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.

2.解答

class Solution {
public:
    int numSquares(int n) 
    {
        int *temp=new int[n+1];
        int min=0;
        *temp=0;
        for(int i=0;i<n+1;i++)
            temp[i]=0;
     
        for(int i=1;i<=sqrt(n);i++)
        {
            temp[i*i]=1;
        }
        
        for(int i=2;i<=n;i++)
        {
            if(temp[i]!=1)
            {
                min=10000;
                for(int j=1;j<sqrt(i);j++)
                {
                    int a=temp[j*j]+temp[i-j*j];
                    if(a<min)
                        min=a;
                }
                temp[i]=min;
            }
        }
        int res=temp[n];
        delete []temp;
        return res;
        
    }
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11552次
    • 积分:527
    • 等级:
    • 排名:千里之外
    • 原创:42篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条