码迷,mamicode.com
首页 > 其他好文 > 详细

完全平方数

时间:2019-04-14 11:09:39      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:.com   图片   info   mic   完全   等于   需要   搜索   color   

给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

思路1:BFS

相当于找一条步数最短的路径,使得权重和等于n

思路2:trick

利用四平方和定理:任意一个正整数都能表示成不超过4个整数的平方和。其推论就是:如果一个正整数可以表示成4个整数的平方和,那么也可以表示为技术图片

综上,问题的答案只有1,2,3,4。先通过推论判断是不是4,再看能不能由1或2个整数的平方和表示,不能的话就返回3.

这里判断能不能由1或2个整数的平方和表示,就是暴力搜索啦,这种写法蛮简洁的

int a = 0;
while(a*a <= n){
    int b = sqrt(n - a*a);
    if(a*a + b*b == n){
        if(a == 0 || b == 0) return 1;
        else return 2;
    }
    a++;
}

 

完全平方数

标签:.com   图片   info   mic   完全   等于   需要   搜索   color   

原文地址:https://www.cnblogs.com/fanmu/p/10704210.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!