完全背包模板题 | #最少的完全平方数#

最少的完全平方数

https://www.nowcoder.com/practice/4b2f5d4c00f44a92845bdad633965c04

dp43 最少的完全平方数

给定一个正整数n,请找出最少个数的完全平方数,使得这些完全平方数的和等于n。完全平方指用一个整数乘以自己例如11,22,3*3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。例如:1,4,9,和16都是完全平方数,但是2,3,5,8,11等等不是

输入:5

输出:2

说明:1+4=5


int main()
{
    int n ;
    scanf("%d",&n);
    int mx = sqrt(n);
    if(mx*mx == n)
    {
        printf("1");
        return 0;
    }
    vector<int> dp(n+1,0x3f);
    dp[0] = 0;
    for(int i=1;i<=mx;i++) {
        for(int j=i*i;j<=n;j++) {
            dp[j] = min(dp[j],dp[j-i*i] + 1);
        }
    } 
    
    printf("%d\n",dp[n]);
    return 0;
}






算法常用解题技巧 文章被收录于专栏

算法常用解题技巧

全部评论

相关推荐

牛客83700679...:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
程序员饺子:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务