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

本文主要是介绍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;其他值默认falsevector<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初始化,所有背包在没放物品时默认价值为0vector<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;
}

这篇关于LeetCode 279完全平方数 139单词拆分 卡码网 56携带矿石资源(多重背包) | 代码随想录25期训练营day45的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/484085

相关文章

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Java Spring ApplicationEvent 代码示例解析

《JavaSpringApplicationEvent代码示例解析》本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、... 目录一、Spring 事件机制核心概念1. 事件驱动架构模型2. 核心组件二、代码示例解析1. 事件定义

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操