LeetCode 279完全平方数 139单词拆分 卡码网 56携带矿石资源(多重背包) | 代码随想录25期训练营day45

动态规划算法6

LeetCode 279 完全平方数 2023.12.11

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
int numSquares(int n) {
    //1确定dp数组,其下标表示j的完全平方数的最少数量
    //3初始化,将dp[0]初始化为0,用于计算,其他值设为INT_MAX用于递推公式求最小
    vector<int> dp(n+1,INT_MAX);
    dp[0] = 0;
    //2确定递推公式,背包j值的最小完全平方数数量=min(背包值j-i*i的最小完全平方数量+1, 之前遍历的dp[j])
    //因为是求具体值,而非排列数或组合数,所以先遍历背包或者物品均可
    for (int i = 1; i <= sqrt(n); i++)
    {
        for(int j = i*i; j <= n; j++)
        {
            //背包j值的最小完全平方数数量=min(背包值j-i*i的最小完全平方数量+1, 之前遍历的dp[j])
            dp[j] = min(dp[j-i*i]+1, dp[j]);
        }
    }
    return dp[n];
}

LeetCode 139 单词拆分 2023.12.11

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
bool wordBreak(string s, vector<string>& wordDict) {
    //用于搜索函数搜索某一子串,string类型没有find()函数,与循环体中注释语句配合使用
    //unordered_set<string> wordSet(wordDict.begin(), wordDict.end());
    //1确定dp数组及下标含义,dp[i]表示(0,i)子字符串能否被拼接出
    //3初始化,dp[0]不能为false,否则后续都为false;其他值默认false
    vector<bool> dp(s.size()+1, false);
    dp[0] = true;
    string cur;
    //2确定递推公式,4确定遍历顺序
    //dp[i]表示(0,i)子字符串能否被拼接出,当(j,i)子字符串在字典中且(0,j)子字符串能被拼接出时dp[i]为true
    //该题为完全背包问题,且具有排列顺序,所以先遍历背包后遍历物品
    for (int i = 1; i <= s.size(); i++)
    {
        for(int j = 0; j <= i; j++)
        {
            //背包容量为i,判断(j,i)与(0,j)是否可拼接
            cur = s.substr(j, i-j);
            //if(wordSet.find(cur) != wordSet.end() && dp[j] == true)
            if(find(wordDict.begin(), wordDict.end(), cur) != wordDict.end() && dp[j] == true)
                dp[i] = true;
        }
    }
    return dp[s.size()];
}

卡码网 56 携带矿石资源(多重背包) 2023.12.11

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
#include<bits/stdc++.h>
using namespace std;

int main()
{
    //背包容量,矿石种类
    int bagSize, sortSize;
    cin >> bagSize >>sortSize;
    //每种矿石的重量、价值、及数量
    vector<int> weight(sortSize, 0);
    vector<int> price(sortSize, 0);
    vector<int> num(sortSize, 0);
    for(int i = 0; i < sortSize; i++)
        cin >> weight[i];
    for(int i = 0; i < sortSize; i++)
        cin >> price[i]; 
    for(int i = 0; i < sortSize; i++)
        cin >> num[i];
    //1确定dp数组及下标含义,这里表示容量为i的背包能装矿石的最大价值
    //3初始化,所有背包在没放物品时默认价值为0
    vector<int> dp(bagSize+1, 0);
    //2确定递推公式,4确定遍历顺序
    //递推公式中,k表示第i中物品的个数,容量为j的背包最大价值=
    //max(上次遍历物品的j容量背包最大价值,j-k*weight[i]容量大小的背包的最大价值+k个i物品的价值)
    for(int i = 0; i < sortSize; i++)
    {
        for(int j = bagSize; j >= weight[i]; j--)
        {
            for(int k = 1; k <= num[i] && j >= k*weight[i]; k++)
            {
                dp[j] = max(dp[j-k*weight[i]] + k*price[i], dp[j]);
            }
        }
    }
    cout << dp[bagSize] << endl;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/236852.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++联合体union

联合体 将多个类型合并到一起省空间 枚举与联合一起使用 匿名联合 类似于无作用域 &#xff23;11联合体定义非内建类型 C11 引入了能够在联合体中使用非内建类型的能力&#xff0c;这些类型包括具有自定义构造函数、析构函数、拷贝构造函数和拷贝赋值运算符的类。 关键特性…

STM32F407-14.1.0-01高级定时器简介

TIM1 和 TIM8 简介 高级控制定时器&#xff08;TIM1 和 TIM8&#xff09;包含一个 16 位自动重载计数器&#xff0c;该计数器由可编程预分频器驱动。 此类定时器可用于各种用途&#xff0c;包括测量输入信号的脉冲宽度&#xff08;输入捕获&#xff09;&#xff0c;或者生成输出…

软件运行原理 - 内存模型 - 栈内存

说明 C/C软件运行时&#xff0c;内存根据使用方式的不同分为堆内存和栈内存&#xff0c;栈内存使用有以下特征&#xff1a; 栈内存使用&#xff08;申请、释放&#xff09;由系统自动分配和释放&#xff0c;程序员不用做任何操作。栈内存重复使用&#xff0c;进入函数时数据入…

Axure安装及面板各区域详解

目录 一、Axure简介 二、Axure安装及使用准备 2.1 Axure官网 2.2 Axure授权 2.3 Axure汉化 2.4 设置RP文件保存路径 三、Axure菜单栏的使用 3.1 新建项目 3.2 新建元件库 3.3 自动备份设置 3.4 页面画布网格设置 四、Axure工具栏 4.1 选择模式 4.1.1 相交选中 4…

基于Qt的登录页面设计

题目&#xff1a; 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和…

CyclicBarrier、CountDownLatch、Semaphore 的用法

CyclicBarrier、CountDownLatch、Semaphore 的用法 CountDownLatch&#xff08;线程计数器 &#xff09; CountDownLatch 类位于 java.util.concurrent 包下&#xff0c;利用它可以实现类似计数器的功能。比如有一个任务 A&#xff0c;它要等待其他 4 个任务执行完毕之后才能执…

建筑可视化数据大屏汇总,UI源文件(PC端大屏设计)

酷炫的大屏设计让数据更好的展现&#xff0c;方便业务人员分析数据&#xff0c;辅助领导决策。现在分享大屏Photoshop源文件&#xff0c;以下为部分截图示意。 划重点&#xff1a;文末可获得完整素材包~ 01 科技建筑平台数据可视化 02 建筑公司可视化数据汇总平台 03 深蓝…

软件开发流程分析

软件开发流程分析 相关概念1 原型设计2 产品设计3 交互设计4 代码实现详细步骤 相关概念 前端&#xff1a;自研API&#xff0c;调用第三放API 后端&#xff1a;自研API&#xff0c;第三方API 数据库&#xff1a;Mysql&#xff0c;数据采集&#xff0c;数据迁移 服务器&#xf…

软件兼容性测试:保障多样化用户体验的重要功能

随着移动设备和操作系统的快速发展&#xff0c;软件兼容性测试变得越发重要。这项测试确保软件在不同平台、设备和环境下都能够正常运行&#xff0c;提供一致而稳定的用户体验。下面是软件兼容性测试中的一些关键功能&#xff1a; 1. 跨平台兼容性测试 在不同操作系统上运行的软…

Shopify二次开发之五:元字段(Metafields)

目录 解释 操作 1、添加Custom data 2、选择特定类型的数据 3、为Page配置元子段和值 4、模板访问 解释 Shopify Metafields 是一种用于存储和管理自定义数据的功能。它们允许商户在商城中的产品、订单、客户、Page等对象上添加自定义字段&#xff0c;以满足特定业务需求…

【计算机网络】应用层电子邮件协议

一、电子邮件系统架构 电子邮件是一个典型的异步通信系统&#xff0c;发送方从UA&#xff0c;也就是邮件客户端&#xff0c;通过应用层SMTP协议&#xff0c;传输层tcp协议&#xff0c;发送给发送方的邮件服务器&#xff0c;比如使用的是163邮箱&#xff0c;163提供的SMTP服务器…

3D民俗非遗全景云展馆更高效低投入地传承传统文化

在数字化时代&#xff0c;VR全景沉浸式展示方案成为各行业打造沉浸式展示的新玩法。云览互动为企业和机构提供专业的VR全景沉浸式展示方案&#xff0c;通过虚拟体验带来前所未有的沉浸感和视觉冲击&#xff0c;为用户带来全新的体验。 非遗虚拟VR云展平台是一种全新的物质文化遗…

【MATLAB】基于CEEMD分解的信号去噪算法(基础版)

代码的使用说明 【MATLAB】基于CEEMD分解的信号去噪算法&#xff08;基础版&#xff09; 代码流程图 代码效果图 获取代码请关注MATLAB科研小白的个人公众号&#xff08;即文章下方二维码&#xff09;&#xff0c;并回复CEEMD去噪 本公众号致力于解决找代码难&#xff0c;写代…

卖家必看!亚马逊关联封店要怎么申诉?亚马逊防关联方法分享

不少亚马逊卖家为了能够提升产品销量&#xff0c;这个时候可能就会多开店铺&#xff0c;但是亚马逊会通过技术手段识别账号之间的关联性&#xff0c;一旦被检测到多个账号为同一卖家所有&#xff0c;这些账号就会被判定为关联&#xff0c;很多卖家遇到后都不知道怎么处理&#…

对象的生离死别

对象的生离死别 实验介绍 在构建一个类时&#xff0c;一般情况下需要编写构造函数、拷贝构造函数以及析构函数&#xff0c;这将直接影响程序的运行。而初始化列表是在调用构造函数时初始化参数的方式。 一个对象从实例化到销毁的历程&#xff1a; 知识点 内存分区构造函数exp…

IP定位数据可能不准的原因有哪些

IP定位数据可能不准的原因有多种&#xff0c;主要包括以下几个方面&#xff1a; 动态IP地址&#xff1a;一些互联网服务提供商(ISP)会为用户分配动态IP地址&#xff0c;这意味着用户的IP地址可能会随时间而变化。因此&#xff0c;数据库中的位置信息可能不时过时。 代理服务器…

视频如何提取文字?这四个方法一键提取视频文案

视频如何提取文字&#xff1f;你用过哪些视频提取工具&#xff1f;视频转文字工具&#xff0c;又称为语音识别软件&#xff0c;是一款能够将视频中的语音或对话转化为文字的实用工具。它运用了尖端的声音识别和语言理解技术&#xff0c;能精准地捕捉视频中的音频&#xff0c;并…

当视觉遇到毫米波雷达:自动驾驶的三维目标感知基准

​ 文章&#xff1a;Vision meets mmWave Radar: 3D Object Perception Benchmark for Autonomous Driving 作者: Yizhou Wang, Jen-Hao Cheng, Jui-Te Huang , Sheng-Yao Kuan , Qiqian Fu , Chiming Ni 编辑&#xff1a;点云PCL 欢迎各位加入知识星球&#xff0c;获取PDF…

Web安全-SQL注入【sqli靶场第11-14关】(三)

★★实战前置声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将其信息做其他用途&#xff0c;由用户承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 0、总体思路 先确认是否可以SQL注入&#xff0…

Q_GDW1819-2013电压监测装置协议结构解析

目录 一 专业术语二 基本功能2.1 基础功能2.2 数据存储2.3 显示功能&#xff08;设备能够看到的&#xff09;2.4 参数设置与查询2.5 事件检测与告警功能 三 其他内容3.1 通信方式3.2 通信串口 四 帧结构解析4.1 传输方式4.2 数据帧格式4.2.1 报文头&#xff08;2字节&#xff0…