【代码随想录day38】【C++复健】322. 零钱兑换;279.完全平方数;139.单词拆分;卡码网56. 携带矿石资源

322. 零钱兑换

本来写的时候自我感觉良好,感觉这题,定能手到擒来呀,结果一写发现基本上把坑踩了一遍:

1 数组初始化

一开始初始化初始化成了0,导致最后结果不管怎样都是0;随后换成了INT_MAX,发现同样会报错,因为INT_MAX+1超范围了。一怒之下看了眼范围是从0-10000,直接设置初始值为10001,这下没问题了。

2 位置0初始化

数组初始化搞定之后,这次是忘了给0号位初始化成0。

3 忘写判断-1的条件

写出来看着返回10001,先是懵逼了一下,随后才发现,好像得判断一下什么时候返回-1,这倒是简单,直接如果是10001则返回-1即可。

class Solution {
public:int coinChange(vector<int>& coins, int amount) {int n = coins.size();vector<int> dp(amount+1, 10001);dp[0] = 0;for(int i=0; i<n; i++){for(int j=coins[i]; j<=amount; j++){dp[j] = min(dp[j], dp[j-coins[i]]+1);}}if(dp[amount] == 10001){return -1;}return dp[amount];}
};

279.完全平方数

本题倒是没遇到什么问题,直接做出来了,就是把sqrt(i)写成sqrt(n)了,看了好一会。

还有就是考虑了一下遍历顺序的问题,前面总结了排列先背包,组合先物品,但往往分不清到底是排列还是组合,比如本题是排列问题还是组合问题呢?

答案是--都不是。

class Solution {
public:int numSquares(int n) {int count = 0;vector<int> dp(n+1, 10001);dp[0] = 0;for(int i=0; i<=n; i++){for(int j=0; j<=sqrt(i); j++){dp[i] = min(dp[i], dp[i-j*j] + 1);}}return dp[n];}
};

139.单词拆分

本题上一周目没做过,所以算是第一次接触,结果直接毫无思路。能想到的就是这肯定是一个排列问题,因为不同的单词组成的S显然也不同。当时思考了半天怎么把一个S给拆成不同的单词才对,然后用背包去遍历这些单词,然而怎么想都感觉不对劲。

最后看了解析才想明白,每次只用根据当前位置来判断最后几个字母能不能和某个单词对得上即可,如果对得上就延续之前的true,否则直接取false即可。

随后,虽然想明白了原理,但还是在判断这块遇到了阻碍,具体来说就是这句很长的if:

if(j >= length && dp[j - length] == true && s.substr(j-length, length) == wordDict[i])

当时想了半天substr从哪里开始取,取多长,写了半天才写对,简单来说还是没搞清楚j代表什么意思。j代表背包的最后一位,所以显然是从j-length开始取length位即可。

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {int n = s.size();vector<bool> dp(n+1);dp[0] = true;for(int j=0; j<=n; j++){for(int i=0; i<wordDict.size(); i++){int length = wordDict[i].size();if(j >= length && dp[j - length] == true && s.substr(j-length, length) == wordDict[i]){dp[j] = true;}}}return dp[n];}
};

卡码网56. 携带矿石资源

本题也是第一次接触,先看了一眼多重背包的处理方式,看到要先转摊平01背包然后再按01背包处理即可。不过虽然说起来逻辑很简单,实现起来确实蛮复杂的,尤其是ACM模式下,哪怕以咱如此扎实渣石的代码功力,也还是遇到了一点点小问题。

写了半天自信满满以为肯定能ac,结果一点运行发现越界,检查了两年半发现dp循环把j--写成j++了,真是不知道说自己什么好。属于是大风大浪都经过了,最后在一个无人在意的角落默默地似了。

#include<iostream>
#include<vector>
using namespace std;int main(){int c;cin >> c;int n;cin >> n;vector<int> weight(n);for(int i=0; i<n; i++){cin >> weight[i];}vector<int> value(n);for(int i=0; i<n; i++){cin >> value[i];}vector<int> amount(n);int sum = 0;for(int i=0; i<n; i++){cin >> amount[i];sum += amount[i];}vector<int> weightnew;vector<int> valuenew;for(int i=0; i<n; i++){for(int j=0; j<amount[i]; j++){weightnew.push_back(weight[i]);valuenew.push_back(value[i]);}}vector<int> dp(c+1);for(int i=0; i<sum; i++){for(int j=c; j>=weightnew[i]; j--){dp[j] = max(dp[j], dp[j-weightnew[i]]+valuenew[i]);}}cout << dp[c];
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国省级新质生产力发展指数数据(任宇新版本)2010-2023年

一、测算方式&#xff1a;参考C刊《财经理论与实践》任宇新&#xff08;2024&#xff09;老师的研究&#xff0c;新质生产力以劳动者劳动资料劳动对象及其优化组合的质变为 基本内涵&#xff0c;借 鉴 王 珏 和 王 荣 基 的 做 法构建新质生产力发展水平评价指标体系如下所示&a…

设计模式之 状态模式

状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许一个对象在其内部状态改变时&#xff0c;改变其行为。这种模式将状态的转换和行为的变化解耦&#xff0c;将不同状态的行为封装到独立的状态类中&#xff0c;而通过上下文&#xff08;Con…

学习日志015--python单链表

创建 class Node:def __init__(self,data):# 数据域self.data data# 链接域self.next Noneclass LinkList:def __init__(self,):# 初始化头节点self.head None# 记录链表的长度self.size 0 增加 #头插def insert_head(self,value):# 创建新节点node Node(value)q self…

CSP/信奥赛C++语法基础刷题训练(22):洛谷P1075:[NOIP2012 普及组] 质因数分解

CSP/信奥赛C语法基础刷题训练&#xff08;22&#xff09;&#xff1a;洛谷P1075&#xff1a;[NOIP2012 普及组] 质因数分解 题目描述 已知正整数 n n n 是两个不同的质数的乘积&#xff0c;试求出两者中较大的那个质数。 输入格式 输入一个正整数 n n n。 输出格式 输出…

Java开发经验——开发常用工具类

摘要 本文介绍了Java开发中常用的工具类&#xff0c;包括Apache Commons Collections的SetUtils、Google Guava的Sets、Apache Commons Lang的ArrayUtils等&#xff0c;以及它们在集合操作、数组操作、字符串处理、JSON处理等方面的应用。文章还涉及了Optional类、Money工具类…

【Python TensorFlow】进阶指南(续篇三)

在前几篇文章中&#xff0c;我们探讨了TensorFlow的高级功能&#xff0c;包括模型优化、分布式训练、模型解释等多个方面。本文将进一步深入探讨一些更具体和实用的主题&#xff0c;如模型持续优化的具体方法、异步训练的实际应用、在线学习的实现细节、模型服务化的最佳实践、…

阿里系 acw_sc__v3 某教学网站

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我删…

1、HCIP之RSTP协议与STP相关安全配置

目录 RSTP—快速生成树协议 STP STP的缺点&#xff1a; STP的选举&#xff08;Listening状态中&#xff09;&#xff1a; RSTP P/A&#xff08;提议/同意&#xff09;机制 同步机制&#xff1a; 边缘端口的配置&#xff1a; RSTP的端口角色划分&#xff1a; ensp模拟…

ChatGPT 与其他 AI 技术在短视频营销中的技术应用与协同策略

摘要&#xff1a; 本文深入探讨了 ChatGPT 及其他 AI 技术在短视频营销中的应用。从技术层面剖析了这些技术如何助力短视频内容创作、个性化推荐、用户互动以及营销效果评估等多方面&#xff0c;通过具体方法分析、数据引用与大模型工具介绍&#xff0c;旨在为短视频营销领域提…

数据结构-树状数组专题(2)

一、前言 接上回树状数组专题&#xff08;1&#xff09;&#xff0c;这次主要介绍差分跟树状数组联动实现区间更新 二、我的模板 重新放了一遍&#xff0c;还是提一嘴&#xff0c;注意下标从0开始&#xff0c;区间左闭右开 template <typename T> struct Fenwick {in…

使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程

当涉及到图数据时&#xff0c;复杂性是不可避免的。无论是社交网络中的庞大互联关系、像 Freebase 这样的知识图谱&#xff0c;还是推荐引擎中海量的数据量&#xff0c;处理如此规模的图数据都充满挑战。 尤其是当目标是生成能够准确捕捉这些关系本质的嵌入表示时&#xff0c;…

启动前后端分离项目笔记

一、项目 首先可以在各大开源软件拿取一个项目&#xff0c;以下项目是在gitee上获取 二、准备工作 配置JDK环境&#xff0c;node.js环境&#xff0c;安装vue脚手架工具以及maven环境 三、前端项目启动 在前端目录下安装依赖 npm install 如果报错可能是因为权限不够&#…

3个月,2000+台虚机迁移成功!

在全球数字化浪潮的推动下&#xff0c;各国政务部门纷纷加速信息化与数字化转型&#xff0c;以提升服务效率和数据安全。在这一背景下&#xff0c;墨西哥某政府部门因迅速增长的政务数字化需求&#xff0c;选择与华为云合作&#xff0c;构建专属的政务私有云平台。 经过多方尝…

GRU (门控循环单元 - 基于RNN - 简化LSTM又快又好 - 体现注意力的思想) + 代码实现 —— 笔记3.5《动手学深度学习》

目录 0. 前言 1. 门控隐状态 1.1 重置门和更新门 1.2 候选隐状态 1.3 隐状态 2. 从零开始实现 2.1 初始化模型参数 2.2 定义模型 2.3 训练与预测 3 简洁实现 4. 小结 0. 前言 课程全部代码&#xff08;pytorch版&#xff09;已上传到附件看懂上一篇RNN的所有细节&am…

微知-plantuml常用语法和要点以及模板?(note over、create、box,endbox、alt,else,end, autonumber)

文章目录 常见语法常用 线条类实线虚线斜箭头或奇数箭头 A ->(10) B: B->(10) A分割线&#xff1a;newpage 颜色类给箭头指定颜色 -[#red]->给某个note加颜色&#xff1a; note over Alice, Bob #FFAAAA: xxx给分组信息着色 alt#red 分组类alt xxx; else xxx; else xx…

YOLOV5/rknn生成可执行文件部署在RK3568上

接上一篇文章best-sim.rknn模型生成好后&#xff0c;我们要将其转换成可执行文件运行在RK3568上&#xff0c;这一步需要在rknpu上进行&#xff0c;在强调一遍&#xff01;&#xff01;rknpu的作用是可以直接生成在开发板上运行的程序 退出上一步的docker环境 exit1.复制best-…

2024信创数据库TOP30之蚂蚁集团OceanBase

数据库作为存储、管理和分析这些数据的关键工具&#xff0c;其地位自然不言而喻。随着信息技术的日新月异&#xff0c;数据库技术也在不断演进&#xff0c;以满足日益复杂多变的市场需求。近日&#xff0c;备受瞩目的“2024信创数据库TOP30”榜单由DBC联合CIW/CIS权威发布&…

Kafka 生产者优化与数据处理经验

Kafka&#xff1a;分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析&#xff1a;从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…

【强化学习的数学原理】第02课-贝尔曼公式-笔记

学习资料&#xff1a;bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接&#xff1a;强化学习的数学原理 西湖大学 赵世钰 文章目录 一、为什么return重要&#xff1f;如何计算return&#xff1f;二、state value的定义三、Bellman公式的详细推导四、公式向量形式…

006-自定义枚举注解

自定义枚举注解 一、业务需求描述1.问题描述2.解决方案 二、创建一个描述注解三、创建一个枚举注解四、创建一个枚举五、创建一个配置文件六、场景实战1.在 RequestParam 前面使用2.在非 Model 的实体类上使用3.在 RequestBody 对应的实体类中使用 七、效果展示 一、业务需求描…