【代码随想录】刷题笔记Day42

前言

  • 这两天机器狗终于搞定了,一个控制ROS大佬,一个计院编程大佬,竟然真把创新点这个弄出来了,牛牛牛牛(菜鸡我只能负责在旁边喊加油)。下午翘了自辩课来刷题,这次应该是元旦前最后一刷了,下午尽量刷多点吧(活就是2024再说嘿嘿)~

96. 不同的二叉搜索树 - 力扣(LeetCode)

  • 这一题最难的还是找规律,和整数拆分类似,DST定头节点后,左边是小的DST,右边是大的DST,所以可能数是左右可能数相乘
  • dp含义:dp[i] : 1到i为节点组成的二叉搜索树的个数为dp[i]
  • 递推公式:dp[i] += dp[j] * dp[i - j - 1](j从0开始)
  • 初始化:dp[0] = dp[1] = 1,从前往后遍历
  • class Solution {
    public:int numTrees(int n) {vector<int> dp(20);dp[0] = 1;dp[1] = 1;for(int i = 2; i < dp.size(); i++){for(int j = 0; j < i; j++){dp[i] += dp[j] * dp[i - j - 1];}}return dp[n];}
    };

 01背包问题理论基础(二维数组)

  • 问题定义
    • 有限个物体(都只有一个),有大小和价值,放进固定容量的背包里如何放是最大价值,暴力算的话时间复杂度为2^n(每件物品状态01),需要用动态规划,刚开始看有点懵,但是结合算法图解看很好懂
  • dp数组含义
    • dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少
  • 递推公式
    • dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
  • 初始化
    • 第一行初始化从能装开始放value[0],第一列and其它全初始化为0
  • 遍历顺序
    • 两层for循环,按行先遍历物品再遍历背包(反过来其实也行)
    • →↓ 或 ↓→(前者好理解一些)
  • void test_2_wei_bag_problem1() {vector<int> weight = {1, 3, 4};vector<int> value = {15, 20, 30};int bagweight = 4;// 二维数组vector<vector<int>> dp(weight.size(), vector<int>(bagweight + 1, 0));// 初始化for (int j = weight[0]; j <= bagweight; j++) {dp[0][j] = value[0];}// weight数组的大小 就是物品个数for(int i = 1; i < weight.size(); i++) { // 遍历物品for(int j = 0; j <= bagweight; j++) { // 遍历背包容量if (j < weight[i]) dp[i][j] = dp[i - 1][j];else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);}}cout << dp[weight.size() - 1][bagweight] << endl;
    }int main() {test_2_wei_bag_problem1();
    }

 01背包问题理论基础(滚动数组)

  •  和二维数组比,一维只要更新一行就行,但是遍历顺序要从后往前(用没更新d[j])
  • dp数组含义
    • dp[j]表示:容量为j的背包,所背的物品价值可以最大为dp[j]
  • 递推公式
    • dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
  • 初始化
    • 全初始为0,保证用没放物品的值进行更新最大值
  • 遍历顺序
    • 倒序遍历:本质上还是一个对二维数组的遍历,并且右下角的值依赖上一层左上角的值,因此需要保证左边的值仍然是上一层的,从右向左覆盖
  • void test_1_wei_bag_problem() {vector<int> weight = {1, 3, 4};vector<int> value = {15, 20, 30};int bagWeight = 4;// 初始化vector<int> dp(bagWeight + 1, 0);for(int i = 0; i < weight.size(); i++) { // 遍历物品for(int j = bagWeight; j >= weight[i]; j--) { // 遍历背包容量dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);}}cout << dp[bagWeight] << endl;
    }int main() {test_1_wei_bag_problem();
    }
    

后言

  • 正式开始放假!有什么事2024再说!晚上看晚会去咯!看能不能抽到遥遥领先! 

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

2023年度总结(找到工作)

转眼2023年结束了&#xff0c;今天已经12月29日了。从2022年12月25日考研失败后&#xff0c;2023年就变成了找工作以及上班度日的时光了。针对2023年&#xff0c;我想对自己所说的是&#xff1a;终于找到工作了。作为一个普通的专升本&#xff0c;考研落榜生来说&#xff0c;能…

电子工程师如何接私活赚外快?

对电子工程师来说&#xff0c;利用业余时间接私活是个很常见的技术&#xff0c;不仅可以赚取额外收入&#xff0c;也能提升巩固技术&#xff0c;可以说国内十个工程师&#xff0c;必有五个在接私活养家糊口&#xff0c;如果第一次接私活&#xff0c;该如何做&#xff1f; 很多工…

Mybatis行为配置之Ⅲ—其他行为配置项说明

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…

力扣:968. 监控二叉树(贪心,二叉树)

题目&#xff1a; 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 示例 1&#xff1a; 输入&#xff1a;[0,0,null,0,0] 输出&#xff1a;1 解释&…

iPortal内置Elasticsearch启动失败的几种情况——Linux

作者&#xff1a;yx 文章目录 前言一、端口占用二、ES启动过慢三、磁盘占用过高&#xff0c;导致ES变为只读模式 前言 在Linux环境启动iPortal后有时会出现搜索异常的情况&#xff0c;如下截图&#xff0c;这是因为Elasticsearch&#xff08;以下简称“ES”&#xff09;没启动…

集群部署篇--Redis 主从模式

文章目录 前言Redis 主从部署&#xff1a;1.1 主从架构 介绍&#xff1a;1.2 主从架构 实现&#xff1a;1.2.1 redis 安装&#xff1a; 1.3 主从架构优缺点&#xff1a;1.4 故障转移&#xff1a; 总结 前言 显然在线上环境中 Redis 服务不能以单机的方式运行&#xff0c;必须有…

华为发布的工业软件三大难题:适用于CAD领域的NURBS裁剪曲面自交快速检测

以下内容转载&#xff1a; 自相交&#xff0c;在几何图形有效性验证中的一个错误类型&#xff0c;面要素的自相交在原始数据中是最常见的&#xff0c;这种错误有些可以人工发现&#xff0c;但有些就需要借助程序来发现。 发生自相交的根本原因情况比较多&#xff0c;有些是因为…

3-链表-删除链表的倒数第 N 个结点

这是链表的第三篇算法&#xff0c;力扣链接。 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1],…

探索 WebRTC:数字世界的实时通信魔法

前言 在当今日常生活中&#xff0c;我们期望能够随时随地与朋友、同事或家人进行实时沟通。WebRTC&#xff08;Web实时通信&#xff09;技术就像一种魔法&#xff0c;让这些交流变得无比便捷&#xff0c;而且完全在浏览器中实现&#xff0c;无需下载任何额外应用或插件。 Web…

Java限流方案常用算法详解 固定时间窗口 滑动时间窗口 漏桶限流 令牌桶限流

前言 为什么要做限流&#xff1f; 服务需要保护自己&#xff0c;以免被太多的请求淹没&#xff08;无论是恶意或无意的&#xff09;&#xff0c;从而保持可用性。 举个生活中的例子&#xff0c;某个景区&#xff0c;平时可能根本没什么人前往&#xff0c;但是一旦到了国庆假日…

W5100S-EVB-Pico评估版介绍

文章目录 1 简介2 硬件资源2.1 硬件规格2.2 引脚定义2.3 工作条件 3 参考资料3.1 Datasheet3.2 原理图3.3 尺寸图&#xff08;单位&#xff1a;mm&#xff09;3.4 参考例程 4 硬件协议栈优势 1 简介 W5100S-EVB-Pico是一款基于树莓派RP2040和全硬件TCP/IP协议栈以太网芯片W5100…

Nginx服务器中设置禁止访问文件或目录的方法

location ^~ /assets/ { deny all; } 已启用目录浏览 在nginx要禁止某个或一类资源&#xff0c;只需要增加一个location&#xff0c;然后在其中使用deny all即可。 禁止访问扩展名为bat的文件&#xff0c;配置如下&#xff1a; location ~* /.bat { deny all…

Diffusion Model 学习笔记

论文链接&#xff1a;Denoising Diffusion Probabilistic Models。 Diffusion Model 分为两部分&#xff0c;前向扩散过程和后向生成过程&#xff0c;前向扩散过程从一张原始图像逐步加噪声变为一张纯噪声图像&#xff0c;后向生成过程则从随机噪声来逐步恢复出原图像。 贝叶…

HiWoo Box:远程监控DCS的强大助手

在工业自动化领域&#xff0c;分布式控制系统&#xff08;DCS&#xff09;被广泛应用于各种生产流程中&#xff0c;如化工、电力、制药等。然而&#xff0c;随着企业规模的扩大和生产流程的复杂化&#xff0c;对DCS的远程监控需求也日益迫切。HiWoo Box作为一种功能强大的工业智…

纯CSS实现马里奥效果,回忆一下童年吧

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

基于彩虹表碰撞法破解SHA/MD5等hash加密——半非暴力破解哈希逆运算

背景知识 哈希加密算法应用范围广泛&#xff0c;包括但不限于&#xff1a;Unix风格的用户密码&#xff08;Linux、*BSD、Solaris、AIX、QNX等&#xff09;、macOS、Windows、Web应用程序&#xff08;如WordPress&#xff09;、办公软件&#xff08;如Notes、Domino&#xff09…

亚信安慧AntDB数据库——通信运营商核心系统的全面演进

AntDB数据库源自通信运营商核心系统&#xff0c;经过15年的平稳运行和不断演进&#xff0c;成功跟随通信技术的升级步伐&#xff0c;逐步迈向5G时代&#xff0c;并且在这期间完成了8次大版本的迭代&#xff0c;为行业树立了技术领先的典范。其独特之处在于具备超融合架构&#…

DDAE: Denoising Diffusion Autoencoders are Unified Self-supervised Learners

DDAE: Denoising Diffusion Autoencoders are Unified Self-supervised Learners Paper&#xff1a;https://arxiv.org/abs/2303.09769 Code&#xff1a;https://github.com/FutureXiang/ddae TL; DR&#xff1a;扩散模型的训练其实就是训练一个去噪模型&#xff0c;考虑到类似…

clickhouse连接工具dbeaver

地址 地址&#xff1a; Download | DBeaver Community 安装 表引擎 表引擎之TinyLog 以列文件的形式保存在磁盘上&#xff0c;不支持索引&#xff0c;没有并发控制。一般保存少量数据的小表&#xff0c; 生产环境上作用有限&#xff0c;多用于平时练习测试用。 内存引擎&am…

linux 内核模块

linux 内核模块 1. 内核相关命令与文件内核模块存放位置查看已加载内核模块加载与卸载内核模块修改内核参数永久调整内核参数 2. 常用模块进程调度模块进程间通信模块内存管理模块文件系统模块网络接口模块 Linux 内核采用的是模块化技术&#xff0c;这样的设计使得系统内核可以…