【代码随想录】刷题笔记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再说!晚上看晚会去咯!看能不能抽到遥遥领先! 

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

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

相关文章

车载电子电器架构 —— 电子电气系统开发角色定义

车载电子电器架构 —— 电子电气系统开发角色定义 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 注:本文12000字,深度思考者进!!! 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的…

鸿蒙应用开发 新闻数据加载

1 HTTP 数据请求概述 日常生活中我们使用应用程序看新闻、发送消息等&#xff0c;都需要连接到互联网&#xff0c;从服务端获取数据。例如&#xff0c;新闻应用可以从新闻服务器中获取最新的热点新闻&#xff0c;从而给用户打造更加丰富、更加实用的体验。 那么要实现这样一种…

技术阅读周刊第十二期

年前最后一篇推送&#xff0c;提前祝大家新年快乐。 技术阅读周刊&#xff0c;每周更新。 历史更新 20231201&#xff1a;第八期20231215&#xff1a;第十期20231122&#xff1a;第十一期 Deno vs Go: Native hello world performance | Tech Tonic URL: https://medium.com/de…

R306指纹识别模块的硬件接口

1.外部接口尺寸图 采集芯片外形尺寸&#xff1a;33.4*20.4*3.79 mm 2.串行通讯 R306 指纹模块通讯接口定义&#xff1a; 3.USB 通讯 4.接口说明 4.1 UART a) UART 缺省波特率为 57.6kbps&#xff0c;数据格式&#xff1a;8 位数据位&#xff08;低位在前&#xff09;&#…

【leetcode100-020】【矩阵】旋转图像

【题干】 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 【思路】 怎么还整上小学奥数题了&#xff08;不是对角翻转水平/垂…

什么是SEO?

什么是SEO&#xff1f; SEO代表“搜索引擎优化”。这是通过非付费&#xff08;也称为“自然”&#xff09;搜索引擎结果来提高网站流量的质量和数量以及品牌曝光率的做法。 尽管有首字母缩略词&#xff0c;但 SEO 既关乎搜索引擎本身&#xff0c;也关乎人。这是关于了解人们在…

设计模式(4)--类行为(10)--模板方法

1. 意图 定义一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中。 模板方法使子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 2. 两种角色 抽象类(Abstract Class)、具体类(Concrete Class) 3. 优点 3.1 一种代码复用的基本技术。提取公共行为&am…

现代建筑 Modern Design 展示前端界面html推荐

前言 一款展示现代建筑的网页 一、需求分析 一个现代建筑展示网站是指利用现代技术和设计风格&#xff0c;以展示和推广各种建筑项目和设计作品为主要目的的网站。 作为一个现代建筑展示网站&#xff0c;以下是一些需要的要素&#xff1a; 响应式设计&#xff1a;现代建筑展…

mixins混淆请求字典封装库

摘要&#xff1a; 页面请求要使用到很多重点的查询&#xff0c;写在本页面的逻辑代码太混乱&#xff0c;所以可以抽离封装成功一个js库混淆进来&#xff01; commonMixins.js: import {Toast} from "vant"; export const oplistMix {mounted() {this.GETSTORE_LOCA…

基于电商场景的高并发RocketMQ实战-Consumer端队列负载均衡分配机制、并发消费以及消费进度提交

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 【11来了】文章导读地址&#xff1a;点击查看文章导读&#xff01; &#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f3…

迅软科技助力高科技防泄密:从华为事件中汲取经验教训

近期&#xff0c;涉及华为芯片技术被窃一事引起广泛关注。据报道&#xff0c;华为海思的两个高管张某、刘某离职后成立尊湃通讯&#xff0c;然后以支付高薪、股权支付等方式&#xff0c;诱导多名海思研发人员跳槽其公司&#xff0c;并指使这些人员在离职前通过摘抄、截屏等方式…

MFC - 给系统菜单(About Dialog)发消息

文章目录 MFC - 给系统菜单(About Dialog)发消息概述笔记resource.h菜单的建立菜单项的处理MSDN上关于系统菜单项值的说法END MFC - 给系统菜单(About Dialog)发消息 概述 做了一个对话框程序, 在系统菜单(在程序上面的标题栏右击)中有"关于"的菜单. 这个是程序框架…

4.24 构建onnx结构模型-Slice

前言 构建onnx方式通常有两种&#xff1a; 1、通过代码转换成onnx结构&#xff0c;比如pytorch —> onnx 2、通过onnx 自定义结点&#xff0c;图&#xff0c;生成onnx结构 本文主要是简单学习和使用两种不同onnx结构&#xff0c; 下面以 Slice 结点进行分析 方式 方法一…

Grafana增加仪表盘

1.Grafana介绍 grafana 是一款采用Go语言编写的开源应用&#xff0c;主要用于大规模指标数据的可视化展现&#xff0c;是网络架构和应用分析中最流行的时序数据展示工具&#xff0c;目前已经支持绝大部分常用的时序数据库。 Grafana下载地址&#xff1a;https://grafana.com/g…

网际协议IPv4

基本介绍 网际协议IP是TCP/IP体系中两个重要的协议之一。IPv4虽有最终被IPv6取代的趋势&#xff0c;但它仍是当前使用的最重要的因特网协议。 与IP配套使用的还有3个协议&#xff1a; 地址解析协议ARP(Address Resolution Protocol)因特网控制报文协议ICMP(Internet Control …

年终跑步总结

第一个365天无间断年 以前也跑步很频繁&#xff0c;但今年是第一次365天未缺勤。年跑步量也是历来个人最多&#xff1a;2900km以上。 连续跑步天数累积超700天了 这里出现的签到天数累加只有666次&#xff0c;因为中间有跑步、但没有到app上签到&#xff0c;实际最近一次停…

EOS链Ubuntu环境Install Prebuilt Binaries(安装预构建的二进制文件)的安装

[TOC](EOS链Ubuntu环境Install Prebuilt Binaries(安装预构建的二进制文件)的安装) EOS官网&#xff1a;https://eos.io/ 第一步 Ubuntu安装命令&#xff1a; 以下有两种安装方式&#xff0c;可以任选其一&#xff1a; 本文章已经上传绑定资源&#xff0c;也可以用命令安装。…

【Matlab】ELM极限学习机时序预测算法

资源下载&#xff1a; https://download.csdn.net/download/vvoennvv/88681649 一&#xff0c;概述 ELM&#xff08;Extreme Learning Machine&#xff09;是一种单层前馈神经网络结构&#xff0c;与传统神经网络不同的是&#xff0c;ELM的隐层神经元权重以及偏置都是随机产生的…

微信小程序开发系列-09自定义组件样式特性

微信小程序开发系列目录 《微信小程序开发系列-01创建一个最小的小程序项目》《微信小程序开发系列-02注册小程序》《微信小程序开发系列-03全局配置中的“window”和“tabBar”》《微信小程序开发系列-04获取用户图像和昵称》《微信小程序开发系列-05登录小程序》《微信小程序…

AcWing算法提高课-2.3.1矩阵距离

算法提高课整理 CSDN个人主页&#xff1a;更好的阅读体验 本文同步发表于 CSDN | 洛谷 | AcWing | 个人博客 原题链接 题目描述 给定一个 01 矩阵&#xff0c;求矩阵中每个元素离 1 的最短曼哈顿距离。 输入格式 第一行两个整数 n , m n,m n,m。 接下来一个 n n n 行 …