【数据结构】动态规划-基础篇
针对动态规划问题,我总结了以下5步:
确定dp数组以及下标的含义;
递推公式;
dp数组如何初始化;
遍历顺序;
打印dp数组(用来debug);
以上5步适用于任何动态规划问题,下面针对题目,我们来具体实践:
说明:本题代码均为力扣AC代码。
题目一:斐波那契数
class Solution {
public:int fib(int n) {//1.dp[i]表示第i个斐波那契数的值//2.递推公式 dp[i] = dp[i-1] + dp[i-2]//3.dp[0] = 0 dp[1] = 1//4.遍历顺序:本题从前到后遍历即可if(n == 0 || n == 1)return n;vector<int>dp(n+1);dp[0] = 0;dp[1] = 1;for(int i = 2;i <= n;++i){dp[i] = dp[i-1] + dp[i-2];}return dp[n];//返回第n个斐波那契数的值}
};
当然,本题非常简单,不使用动态规划也是OK的。
class Solution {
public:int fib(int n) {//迭代if(n == 0 || n== 1)return n;vector<int>f(n+1);f[0] = 0;f[1] = 1;int cur = 0;for(int i = 2;i <= n;++i){cur = f[0] + f[1];f[0] = f[1];f[1] = cur;}return cur;}
};
题目二:爬楼梯
分析一波:为啥递推公式是dp[i] = dp[i-1]+dp[i-2]?dp[i]为到达第i阶有dp[i]种方法,.dp[i-1]为到达第i-1阶有dp[i-1]种方法,.dp[i-2]为到达第i-2阶有dp[i-2]种方法,要想到达第i阶,只需从第i-1阶爬一阶或者从第i-2阶爬二阶即可,所以dp[i] = dp[i-1]+dp[i-2]。
class Solution {
public:int climbStairs(int n) {//1.dp[i]为到达第i阶有dp[i]种方法//2.递推公式:dp[i] = dp[i-1]+dp[i-2]//3.dp[1] = 1,dp[2] = 2//遍历顺序:因为dp[i]依赖于dp[i-1]、dp[i-2],所以应该从前到后遍历vector<int> dp(n + 1);if(n == 1 || n == 2)return n;dp[1] = 1;dp[2] = 2;for(int i=3;i<=n;++i){dp[i] = dp[i-1]+dp[i-2];}return dp[n];//爬到第n阶一共有多少种方法}
};
题目三: 使用最小花费爬楼梯
分析一波:本题和上一道爬楼梯很相似,不过是加上了个花费,这里dp[i]为到达i阶楼梯最小的花费,要想到达第i阶,只需从第i-1阶爬一阶或者从第i-2阶爬二阶即可,从第i-1阶爬到第i阶需要花费dp[i-1]+cost[i-1],从第i-2阶爬到第i阶需要花费dp[i-2]+cost[i-2],本题要求最小花费,所以状态转移方程为dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]).
对于初始化,本题说了可以选择从下标为0或1的元素作为初始阶梯,还要注意一点是不跳不花费体力,所以dp[0] = 0,dp[1] = 0.
对于遍历顺序,由于dp[i]是依靠dp[i-1]和dp[i-2]推导的,所以遍历顺序是从前到后。
分析完以后,就能很丝滑的做出来啦!
class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();vector<int>dp(n+1);dp[0] = 0;dp[1] = 0;for(int i=2;i<=n;++i){dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);}return dp[n];}
};
题目四:不同路径
分析一波:本题是二维矩阵,所以dp数组应该定义成二维的,dp[i][j]代表从(0,0)位置走到(i,j)位置有多少种不同的路径,可以看到,如果想到达(i,j)的位置,只能从(i,j-1)的位置走一步或者从(i-1,j)的位置向下走一步,所以dp[i][j] = dp[i][j-1]+dp[i-1][j].
对于初始化,要想到达(i,j)的位置,要么从上面过来,要么从左边过来,所以我们要把最左边和最上边都初始化,初始化成多少呢?本题要求只能向右或者向下走,所以最上面行从最左侧走到最右侧只有一种走法,最左侧的列中从最上到最下也只有一种走法,所以初始化如下图。
class Solution {
public:int uniquePaths(int m, int n) {//创建m行n列的二维数组vector<vector<int>>dp(m,vector<int>(n));for(int i=0;i<m;++i)dp[i][0] = 1;for(int j=0;j<n;++j)dp[0][j] = 1;for(int i=1;i<m;++i){for(int j=1;j<n;++j){dp[i][j] = dp[i][j-1]+dp[i-1][j];}}return dp[m-1][n-1];}
};
题目五:不同路径II
本题和上一题类似,只是本题多了一个障碍物,对于状态转移方程,如果(i,j)位置有障碍的话,那么我们无法继续推导,所以我们需要添加一个条件就是当(i,j)位置不是障碍物时,我们进行推导,否则不去推导。对于初始化,和上一题不同的是,第一列如果有障碍物的话,障碍物后面的位置都无法到达,第一行也是如此,所以我们在初始化时应该加上一个条件,就是当前位置没有障碍物,我们才给dp[i][0]、dp[0][j]初始化成1.
class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m = obstacleGrid.size();int n = obstacleGrid[0].size();if(obstacleGrid[0][0] == 1 || obstacleGrid[m-1][n-1] == 1)return 0;//创建m行n列的二维数组vector<vector<int>>dp(m,vector<int>(n));//dp数组初始化for(int i = 0;i < m && obstacleGrid[i][0] == 0;++i)dp[i][0] = 1;for(int j = 0;j < n && obstacleGrid[0][j] == 0;++j)dp[0][j] = 1;for(int i = 1;i < m;++i){for(int j = 1;j < n;j++){if(!obstacleGrid[i][j])dp[i][j] = dp[i-1][j] + dp[i][j-1];}}return dp[m-1][n-1];}
};
题目六:整数拆分
1.确定dp数组含义:dp[i]表示将i进行拆分后得到最大的乘积
2.确定递推公式:将i拆分成两个数最大积为j*(i-j),拆分成三个及以上为j*dp[i-j],这里有个问题,为什么j不拆?实际上,在我们拆分 dp[i-j] 过程中已经包含了拆分 j 的情况,所以这里只考虑如何对 i-j 进行拆分即可,所以递推公式为dp[i] = max(dp[i],max(j*(i-j),j*dp[i-j]))
3.dp数组如何初始化?根据dp数组含义,dp[0] = 0,dp[1] = 0,dp[2] = 1
4.遍历顺序:根据递推公式可以看出,dp[i]的状态依靠dp[i-j]的状态,所以是从前到后遍历。
class Solution {
public:int integerBreak(int n) {if(n == 0 || n == 1)return 0;if(n == 2)return 1;vector<int>dp(n+1);dp[0] = 0,dp[1] = 0,dp[2] = 1;for(int i=3;i<=n;++i){for(int j = 1;j<i;++j){dp[i] = max(dp[i],max(j*(i-j),j*dp[i-j]));}}return dp[n];}
};
对于本题,可以做一个小小的优化。对于拆分i使之乘积最大,一定是拆分成m个近似相同的子数才能得到最大乘积。只不过m我们不知道是几,但是可以确定的是m一定大于等于2,所以在判断条件中,只需要 j <= i/2 即可。举个例子,拆分10的话,可以拆分成5*5,也可以拆分成3*3*4,如果拆分成6*4,后续无论对4如何拆分都不可能得到最大的,因为我们要把i拆分成近似相同的子数才能得到最大值。
题目七:
1.明确dp数组及下标含义:1到i为节点的二叉搜索树的个数为dp[i]
2.递推公式:根据图中分析,dp[3]就是以元素1为头结点BST的数量+以元素2为头结点BST的数量+以元素3为头结点BST的数量,我们要计算dp[i],只需要让 j 从遍历 1 到 i,计算 j 为头结点对应BST的个数并将他们相加即可。注意,j为头结点时,其左子树数目为 j-1 个,右子树数目为 i-j 个状态转移方程:dp[i] += dp[j-1]*dp[i-j].
3.如何初始化?dp[0] = 1,因为空BST也是BST
4.遍历顺序:从前到后
class Solution {
public:int numTrees(int n) {if(n == 1)return 1;vector<int>dp(n+1);dp[0] = 1;for(int i=1;i<=n;++i){for(int j=1;j<=i;++j){dp[i] += dp[j-1]*dp[i-j];}}return dp[n];}
};
相关文章:
【数据结构】动态规划-基础篇
针对动态规划问题,我总结了以下5步: 确定dp数组以及下标的含义; 递推公式; dp数组如何初始化; 遍历顺序; 打印dp数组(用来debug); 以上5步适用于任何动态规划问题&#x…...
从watch、watchEffect、useEffect原理到vue、react响应原理
正文 1.核心原理 Vue中的watch、watchEffect是基于Vue的响应式系统(Proxy),依赖于ref或reactive数据的变化。React中的useEffect基于状态驱动的重新渲染机制,通过依赖数组 [dependency],手动声明需要追踪的状态或属性…...
Cursor+Devbox AI开发快速入门
1. 前言 今天无意间了解到 Cursor 和 Devbox 两大开发神器,初步尝试以后发现确实能够大幅度提升开发效率,特此想要整理成博客以供大家快速入门. 简单理解 Cursor 就是一款结合AI大模型的代码编辑器,你可以将自己的思路告诉AI,剩下的目录结构的搭建以及项目代码的实现均由AI帮…...
SpringBoot+MyBatis整合ClickHouse实践
整合Spring Boot、MyBatis和ClickHouse可以让你使用Java开发的应用程序高效地与ClickHouse数据库进行交互。以下是一个基本的步骤指南,帮助你完成这个整合过程: 1. 添加依赖 首先,在你的pom.xml文件中添加必要的Maven依赖。你需要引入Sprin…...
在数据库设计中同步冗余字段的思考与实践
目录 前言1. 冗余字段设计的背景与场景1.1 场景描述1.2 冗余字段的必要性 2. 冗余字段设计的优点2.1 提高查询效率2.2 简化应用逻辑 3. 冗余字段设计的缺点与挑战3.1 数据不一致问题3.2 更新开销增加3.3 数据冗余占用存储空间 4. 如何同步更新冗余字段4.1 手动更新方式4.2 使用…...
MacOS安装sshfs挂载远程电脑硬盘到本地
文章目录 sshfs简介sshfs安装下载安装macFUSE安装sshfs sshfs使用注意事项 sshfs简介 SSHFS(SSH Filesystem)是一种基于FUSE(用户空间文件系统)的文件系统,它允许你通过SSH协议挂载远程文件系统。使用SSHFS࿰…...
6.824/6.5840(2024)环境配置wsl2+vscode
本文是经过笔者实践得出的最速の环境配置 首先,安装wsl2和vscode 具体步骤参见Mit6.s081环境配置踩坑之旅WSL2VScode_mit6s081-CSDN博客 接下来开始为Ubuntu(笔者使用的版本依然是20.04)配置go的相关环境 1、更新Ubuntu的软件包 sudo apt-get install build-es…...
查询产品所涉及的表有(product、product_admin_mapping)
文章目录 1、ProductController2、AdminCommonService3、ProductApiService4、ProductCommonService5、ProductSqlService1. 完整SQL分析可选部分(条件筛选): 2. 涉及的表3. 总结4. 功能概述 查询指定管理员下所有产品所涉及的表?…...
C# 冒泡的算法
C# 冒泡的算法 public void BubbleSort(int[] arr) {int temp;for (int j 0; j < arr.Length - 2; j){for (int i 0; i < arr.Length - 2; i){if (arr[i] > arr[i 1]){temp arr[i 1];arr[i 1] arr[i];arr[i] temp;}}} }使用方法 int[] array new int[] { 5,…...
前端上传后端接收参数为null
记录一下工作中的问题 前端明明把文件传到后台了,但是后台接收参数为null 原因: 前端上传文件的name和后端接收参数名称不匹配 前端 后端 把前端上传的name由upfile改为file即可 本来是很基本的小问题,但因为自己钻了牛角尖一直没搞定&…...
思考:如何把知识更轻松的传递给别人
为什么我会来思考这个问题呢,我想要把我学到的东西传递给其他人,也就是能够成为一个老师,我曾多次尝试解决问题,但是事情总是不如我所愿。现在我进行一定的总结,来复盘一下我的教授过程。 在学生面对新鲜事物的同时&am…...
BERT的中文问答系统50
我们将对BERT的中文问答系统48-1代码进行以下改进: 1.增加时间日期和日历功能:在GUI中增加显示当前时间和日期的功能,并提供一个日历组件。 2.增加更多模型类型:增加娱乐、电脑、军事、汽车、植物、科技、历史(朝代、皇帝)、名人、生活(出行、菜品、菜谱、居家),法律、…...
node.js实现分页,jwt鉴权机制,token,cookie和session的区别
文章目录 1. 分⻚功能2. jwt鉴权机制1.jwt是什么2.jwt的应用3.优缺点 3. cookie,token,session的对比 1. 分⻚功能 为什么要分页 如果数据量很⼤,⽐如⼏万条数据,放在⼀个⻚⾯显⽰的话显然不友好,这时候就需要采⽤分⻚…...
OpenHarmony-4.GPIO驱动
GPIO 1.功能简介 GPIO(General-purpose input/output)即通用型输入输出。GPIO又俗称为I/O口,I指的是输入(in),O指的是输出(out)。可以通过软件来控制其输入和输出,即I/O控制。通常&…...
static关键字在嵌入式C编程中的应用
目录 一、控制变量的存储周期和可见性 1.1. 局部静态变量 1.2. 全局静态变量 二、控制函数的可见性 2.1. 静态函数 2.2. 代码示例(假设有两个文件:file1.c和file2.c) 三、应用场景 3.1. 存储常用数据 3.2. 实现内部辅助函数 四、注…...
图形开发基础之在WinForms中使用OpenTK.GLControl进行图形绘制
前言 GLControl 是 OpenTK 库中一个重要的控件,专门用于在 Windows Forms 应用程序中集成 OpenGL 图形渲染。通过 GLControl,可以轻松地将 OpenGL 的高性能图形绘制功能嵌入到传统的桌面应用程序中。 1. GLControl 的核心功能 OpenGL 渲染上下文&…...
macOS sequoia 15.1中应用程序“程序坞”没有权限打开
在macOS sequoia 15.1版本中新安装的应用程序在访达中打开报错显示应用程序“程序坞”没有权限打开“(null)”。 解决办法 在启动台中找到终端,点击打开,切换到应用目录下,输入 cd /Applications/ 找到需要打开的应用程序目录࿰…...
汉诺塔递归问题(C++)
汉诺塔递归问题 汉诺塔是典型的递归问题,这个问题可以这样描述: 完成目标: 将n个盘子从A搬运到C,求需要移动多少次完成? **约束条件:**搬运的过程中每次只能移动一个盘子,且不能出现大的盘子…...
【开源】A060-基于Spring Boot的游戏交易系统的设计与实现
🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看项目链接获取⬇️,记得注明来意哦~🌹 赠送计算机毕业设计600个选题ex…...
抖音SEO短视频矩阵源码私有化部署
为了开发一套高效的抖音短视频SEO矩阵系统,开发者需要掌握以下核心技术: 网络编程:具备使用Python、Java或其他编程语言进行网络编程的能力,能够利用爬虫技术从抖音平台获取数据。 数据处理:熟悉并能够应用数据处理工…...
深入浅出:Python 编程语言的学习之路
文章目录 1. Python 简介2. Python 的安装与环境配置2.1 安装 Python2.2 配置开发环境 3. Python 基础语法3.1 变量与数据类型示例代码:定义变量 3.2 控制结构示例代码:条件语句示例代码:循环语句 3.3 函数与模块示例代码:定义函数…...
R语言机器学习论文(三):特征提取
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据一、数据归一化二、离散型分类变量的编码三、筛选特征四、重要特征五、输出结果六、总结系统信息介绍 在数据分析和机器学习项目中,经常需要对数据进行预…...
【C#设计模式(17)——迭代器模式(Iterator Pattern)】
前言 迭代器模式可以使用统一的接口来遍历不同类型的集合对象,而不需要关心其内部的具体实现。 代码 //迭代器接口 public interface Iterator {bool HashNext();object Next(); } //集合接口 public interface Collection {Iterator CreateIterator(); } //元素迭…...
【云原生系列】云计算中的负载均衡是什么,有什么用
云计算里有一个非常重要的概念叫“负载均衡”,如果你经常听到这个词但还不太明白具体是怎么回事,这篇文章可以给你一些思路。负载均衡简单来说就是“分担压力”,确保访问量被合理地分配到各个服务器上,让系统高效且稳定地运行。 …...
笔记本电脑usb接口没反应怎么办?原因及解决方法
笔记本电脑的USB接口是我们日常使用中非常频繁的一个功能,无论是数据传输、充电还是外接设备,都离不开它。然而,当USB接口突然没有反应时,这无疑会给我们的工作和学习带来不小的困扰。下面,我们就来探讨一下笔记本USB接…...
容器运行应用及Docker命令
文章目录 一、使用容器运行Nginx应用1_使用docker run命令运行Nginx应用1 观察下载容器镜像过程2 观察容器运行情况 2_访问容器中运行的Nginx服务1 确认容器IP地址2 容器网络说明3 使用curl命令访问 二、Docker命令1_Docker命令获取帮助方法2_Docker官网提供的命令说明3_docker…...
PETRv2: A Unified Framework for 3D Perception from Multi-Camera Images
全文摘要 本文介绍了一种名为PETRv2的统一框架,用于从多视图图像中进行三维感知。该框架基于先前提出的PETR框架,并探索了时间建模的有效性,利用前一帧的时间信息来提高三维物体检测效果。作者在PETR的基础上扩展了三维位置嵌入(…...
Python库常用函数-数据分析
Python库常用函数 1.pandas库 (1)数据读取与写入 读取 CSV 文件: data pd.read_csv(file.csv)读取 Excel 文件: data pd.read_excel(file.xlsx, sheet_nameSheet1)写入 CSV 文件: data.to_csv(new_file.csv, ind…...
【机器学习】机器学习的基本分类-监督学习-随机森林(Random Forest)
随机森林是一种基于集成学习(Ensemble Learning)思想的算法,由多个决策树构成。它通过结合多棵决策树的预测结果来提升模型的泛化能力和准确性,同时减少过拟合的风险。 1. 随机森林的核心思想 多样性: 随机森林通过引…...
Java入门:22.集合的特点,List,Set和Map集合的使用
1 什么是集合 本质就是容器的封装,可以存储多个元素 数组一旦创建,长度就不能再改变了。 数组一旦创建,存储内容的类型不能改变。 数组可以存储基本类型,也可以存储引用类型。 数组可以通过length获得容量的大小,但…...
Web3与区块链如何通过智能合约实现自动化生态?
Web3和区块链正在重塑互联网的未来,其核心在于去中心化和用户数据自主权。而作为区块链技术的重要组成部分,智能合约通过自动执行预设规则,大大提升了效率和安全性。本文将探讨Web3与区块链如何通过智能合约实现生态的自动化。 什么是智能合约…...
排序算法入门:分类与基本概念详解
引言 排序是编程世界中最常见的操作之一,也是许多算法的基础。不管是从数据中找出最大值还是将一堆乱序的名字整理得井井有条,排序算法都在幕后默默工作。你可能会觉得排序很简单:从小到大排个序而已嘛。但当数据量大到上百万、上亿…...
【Spring Cloud 微服务的简单概述】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...
稳定运行的以Azure Synapse Dedicated SQL Pool数据仓库为数据源和目标的ETL性能变差时提高性能方法和步骤
在Azure Synapse Dedicated SQL Pool(以前称为SQL Data Warehouse)的ETL性能变差时,可以通过以下方法和步骤来提高性能: 1. 分析和监控性能瓶颈 查看执行计划:使用SQL的SET STATISTICS IO ON和SET STATISTICS TIME O…...
可供参考的GitHub国内镜像
在配置了本地hosts文件和魔法后仍存在无法访问的问题 针对如上问题,可以使用国内的镜像地址做替换 例如: https://github.com/bubbliiiing/detr-pytorch改成 https://hub.nuaa.cf/bubbliiiing/detr-pytorch推荐使用的镜像 https://hub.yzuu.cf/ https://hub.nua…...
统计中间件稳定性指标
目前订单业务域涉及中间件:MySQL、Redis、TiDB、MQ、ES。(遗漏项请补充) 一、RDS 资源使用率 实例ID实例名称规格maxCPUavgCPUmaxDISKmaxIOPSavgIOPS活跃会话maxTPSavgTPSmaxQPSavgQPS实例风险 慢查询 慢查询会消耗大量的系统资源&#x…...
Qt Quick开发基础+实战(持续更新中…)
最近更新日期:2024/12/4 一、Qt Quick简介 写在前面: 本篇文章虽然只是作为我的学习笔记,但也作为我日后复习之用,所以会认真并详细记录,但会分重点。 1.3 新建Qt Quick Application工程 这节主要讲2个知识点&#x…...
FPGA Xilinx维特比译码器实现卷积码译码
FPGA Xilinx维特比译码器实现卷积码译码 文章目录 FPGA Xilinx维特比译码器实现卷积码译码1 Xilinx维特比译码器实现2 完整代码3 仿真结果 MATLAB (n,k,m)卷积码原理及仿真代码(你值得拥有)_matlab仿真后代码-CSDN博客 MATLAB 仿真…...
数据结构初阶1 时间复杂度和空间复杂度
本章重点 算法效率时间复杂度空间复杂度常见时间复杂度以及复杂度OJ练习 1.算法效率 1.1 如何衡量一个算法的好坏 如何衡量一个算法的好坏呢?比如对于以下斐波那契数列: long long Fib(int N) { if(N < 3) return 1;return Fib(N-1) Fib(N-2); }斐…...
基于Matlab计算机视觉的车道线识别与前车检测系统研究
随着自动驾驶技术的发展,车道线识别和前车检测成为智能驾驶系统中的核心技术之一。本实训报告围绕基于计算机视觉的车道线识别与前车检测系统展开,旨在通过处理交通视频数据,实时检测车辆所在车道及其与前车的相对位置,从而为车道…...
刷蓝桥杯历年考题(更新至15届~)
第十五届 CA组省赛 AcWing5980.训练士兵 方法一:树状数组:O(nlogn) self-complete /*先枚举组团,后分析每个士兵,有一个特点,组团费用是固定的,那当然是让所有士兵一块训练,训练完的士兵也不会有损失当还…...
Stream API来提取两个字符串字段
如果您有一个包含对象的List,并且想要使用Java 8的Stream API来提取两个字符串字段,然后将这些字段的值连接成一个以逗号隔开的单个字符串或者集合List,您可以按照以下步骤操作: 假设您有一个Person类,其中包含两个字…...
《无畏契约》运行时提示“d3dcompiler_43.dll丢失”是什么原因?“找不到d3dcompiler_43.dll文件”如何解决?
《无畏契约》运行时提示“d3dcompiler_43.dll丢失”是什么原因?“找不到d3dcompiler_43.dll文件”如何解决? 作为一位软件开发从业者,我深知在游戏运行过程中,遇到各种文件丢失、文件损坏和系统报错等问题是多么令人头疼。今天&a…...
社群分享在商业引流与职业转型中的作用:开源 AI 智能名片 2+1 链动模式小程序的应用契机
摘要:本文聚焦于社群分享在商业领域的重要性,阐述其作为干货诱饵在引流方面的关键意义。详细探讨了提供有价值干货的多种方式,包括文字分享、问题解答以及直播分享等,并分析了直播分享所需的条件。同时,以自身经历为例…...
芯食代冻干科技研究院:创新与品质并重,推动家用冻干机高质量发展
11月25日,芯食代首届食品冻干前沿与智能化升级创新大会在江苏常州成功举办。本次大会由芯食代冻干科技研究院(江苏)有限公司与芯食代(上海)科技发展有限公司联合主办,云集学界专家教授、商界企业精英,共议家用冻干机的未来创新发展。作为创新大会,芯食代冻干科技研究院也在本次…...
【C++】栈和队列的模拟实现(适配器模式)
不论是C语言还是C,我们都用其对应的传统写法对栈和队列进行了模拟实现,现在我们要用新的方法模拟实现栈和队列,这个新方法就是适配器模式。 C语言传统写法: C语言模拟实现栈 C传统写法:C模拟实现栈 1.容器适配器 …...
CSS过渡练习-进度条(12)
该进度条先需要一个大盒子和一个小盒子,然后给大盒子与小盒子加style,看进度到多少就是百分之多少;如果要进度条从百分之五十到满格的话就加一个hover的样式(鼠标移到链接上时添加的特殊样式),然后是想要进…...
青动CRM系统PHP+Uniapp
全面解决企业销售团队的全流程客户服务难题,旨在助力企业销售全流程精细化、数字化管理,全面解决企业销售团队的全流程客户服务难题,帮助企业有效盘活客户资源、量化销售行为,合理配置资源、建立科学销售体系,提升销售业绩。 青动…...
word如何快速创建目录?
文章目录 1,先自己写出目录的各级标题。2、选中目标标题,然后给它们编号3、给标题按照个人需求开始分级4、插入域构建目录。4.1、利用快捷键插入域构建目录4.2、手动插入域构建目录 听懂掌声!学会了吗? 前提声明:我在此…...
【机器学习】机器学习的基本分类-监督学习-决策树-CART(Classification and Regression Tree)
CART(Classification and Regression Tree) CART(分类与回归树)是一种用于分类和回归任务的决策树算法,提出者为 Breiman 等人。它的核心思想是通过二分法递归地将数据集划分为子集,从而构建一棵树。CART …...