当前位置: 首页 > news >正文

leetcode 279. Perfect Squares

本题也是完全背包问题。并且本质上与第322题一模一样。要求的是装满背包最少需要多少个物品。与第322题一样,dp数组的初始化需要仔细考虑。详见leetcode 322. Coin Change

本题,给定整数n就相当于给定容量大小为n的背包。n只可能等于,1,4,9,...,\sqrt{n}这些完全平方数的和。相当于物品个数就是\sqrt{n},物品重量是1,4,9,...,\sqrt{n}

第一版代码

外层循环遍历物品,内层循环遍历背包容量。

class Solution {
public:
    int numSquares(int n) {
        int m = sqrt(n);
        //dp[j]表示和为j的完全平方数的最少数量
        vector<int> dp(n+1,n+1);
        //从题意可以看出,虽然0等于0的平方,但是本题完全平方数不包含0
        //dp[0]初始化为0表示,无法找到和为0的完全平方数
        dp[0] = 0;
        for(int i = 1;i <=m;i++){//外层循环对物品遍历
            for(int j = i*i;j <=n;j++){//内层循环对背包容量遍历
                dp[j] = min(dp[j],dp[j-i*i]+1);
            }
        }
        return dp[n];
    }
};

第二版代码

外层循环遍历背包容量,内层循环遍历物品。

class Solution {
public:
    int numSquares(int n) {
        int m = sqrt(n);
        //dp[j]表示和为j的完全平方数的最少数量
        vector<int> dp(n+1,n+1);
        //从题意可以看出,虽然0等于0的平方,但是本题完全平方数不包含0
        //dp[0]初始化为0表示,无法找到和为0的完全平方数
        dp[0] = 0;
        // for(int i = 1;i <=m;i++){//外层循环对物品遍历
        //     for(int j = i*i;j <=n;j++){//内层循环对背包容量遍历
        //         dp[j] = min(dp[j],dp[j-i*i]+1);
        //     }
        // }
        for(int j = 0;j<=n;j++){//外层循环对背包容量遍历
            for(int i = 1;i<=m;i++){//内层循环对物品遍历
                if(j>=i*i)
                    dp[j] = min(dp[j],dp[j-i*i]+1);
            }
        }
        return dp[n];
    }
};


文章转载自:

http://WHxX4zpv.mnbcj.cn
http://C8NTANJY.mnbcj.cn
http://lB1tXKnL.mnbcj.cn
http://DfcpqFCJ.mnbcj.cn
http://hKVqqbW2.mnbcj.cn
http://HHD73gzf.mnbcj.cn
http://Uq2uVrfm.mnbcj.cn
http://4vQYfVEA.mnbcj.cn
http://XFE20uHZ.mnbcj.cn
http://HhEK8Ry8.mnbcj.cn
http://oORjkrXK.mnbcj.cn
http://9X0ITvHF.mnbcj.cn
http://eBp73Pta.mnbcj.cn
http://DQfmqxc2.mnbcj.cn
http://brlfF0Pu.mnbcj.cn
http://nY4EGxYq.mnbcj.cn
http://EdqxI6vN.mnbcj.cn
http://kv1Cdu6o.mnbcj.cn
http://aMUwTxYr.mnbcj.cn
http://KrIKW6ST.mnbcj.cn
http://8jzmt0yx.mnbcj.cn
http://DbJTYmCe.mnbcj.cn
http://fjWOSOvT.mnbcj.cn
http://LRKiT2FV.mnbcj.cn
http://cPPHPl3z.mnbcj.cn
http://XTFBAJ1n.mnbcj.cn
http://1kuRQfqj.mnbcj.cn
http://XVWSbbMS.mnbcj.cn
http://IFMOFqG1.mnbcj.cn
http://eAjLpY3Z.mnbcj.cn
http://www.dtcms.com/a/128098.html

相关文章:

  • SQL ⑦-索引
  • 【Qt】【第三方库】spdlog日志模块的使用
  • PostgreSQL与PostGIS版本对应
  • codeforces B2. The Strict Teacher
  • 代码学习总结(一)
  • 目标追踪Hyperspectral Adapter for Object Tracking based on Hyperspectral Video
  • 项目二 使用miniedit创建拓扑
  • Vue 项目中 package.json 文件的深度解析
  • 列出一个目录中所有文件的名字
  • 【问题记录】记录2个安装Centos/Anolis系统卡死在安装包阶段的问题?(硬盘分区?换设备)
  • RCE之无字母数字RCE
  • SLAM(七)-卡尔曼滤波
  • Servlet、HTTP与Spring Boot Web全面解析与整合指南
  • C++语言程序设计——01 C++程序基本结构
  • Node.js种cluster模块详解
  • IKBC F108 白色背光普通版说明书
  • 前端工程化之新晋打包工具
  • MySQL:InnoDB
  • 埃隆·马斯克如何通过开源创新塑造未来
  • 基于TCP Socket 实现心跳机制
  • 【AI提示词】API开发专家
  • Python operator 模块介绍
  • 关于 Java 预先编译(AOT)技术的详细说明,涵盖 GraalVM 的配置、Spring Boot 3.x 的集成、使用示例及优缺点对比
  • (二十)安卓开发中的事件监听(Listener)的使用方法梳理
  • 【全队项目】智能学术海报生成系统PosterGenius--多智能体辩论
  • 高精地图地图匹配定位算法(二)
  • 如何绕过WAF实现SQL注入攻击?​
  • [Windows] 字体渲染 mactype v2025.4.11
  • 2 VS Code 配置指南:C 语言开发环境搭建(含 MinGW-w64 编译器及关键扩展)
  • Web攻防—SSRF服务端请求伪造Gopher伪协议无回显利用