题解 | 最少的完全平方数

最少的完全平方数

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

#include <bits/stdc++.h>

//动态规划的思想用存储前面计算过的东西,加以利用
//完全平方数可以多次使用,类似完全背包,正好等于n的时候的用值最少
using namespace std;

#define N (int)(1e4+5)

int dp[N];
//体积为完全平方数的值
int volume[N];
//价值全部为1

int my_min(int a,int b){
    return (a<b)?a:b;
}

//正序
int main(){
    int n,v;
    scanf("%d",&n);
    v=(int)sqrt(n);
    for(int i=1;i<=v;i++){
        volume[i]=i*i;
    }
    for(int i=1;i<=n;i++)
    {
        dp[i]=INT_MAX;
    }
    for(int i=1;i<=v;i++)
    {
        for(int j=volume[i];j<=n;j++)
        {
            dp[j]=my_min(dp[j],dp[j-volume[i]]+1);
        }
    }
    printf("%d\n",dp[n]);
    return 0;
}

#动态规划#
全部评论

相关推荐

05-28 23:26
河南大学 Java
双非本,刚学完Redis,项目只有外卖和点评,八股没准备,算法只有lqb省一,感觉敲的项目也是一言难尽没怎么吸收。怎么你们都有实习了
大牛之途:27急个锤子,你投日常实习最好的时间就是9,10月份,那时候暑期实习都结束了,正是缺人的时候。这份日常又能给你的暑期实习增加竞争力,暑期找的好了秋招也不怕了,都是环环相扣的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务