- 博客(45)
- 收藏
- 关注
原创 双指针算法———C++
这里我们就可以使用双指针算法来调控了,我们可以利用两个指针分别指向每个单词的起始和末尾,然后使用相应的下标去遍历题目给出的序列。首先说明双指针,何为双指针顾名思义就是序列中有两个指针来分别配合调控遍历这序列。本题是要求寻找最长的连续不重复子序列,有单调性,可以使用双指针算法来完成。例题:给定一段序列,里面有一些单词,并且每个单词都是以空格隔开。通过我们可以通过这个题知道使用双指针算法的前提一定是具有。本题的解题思路是寻找右指针i的左边最长的不重复子序列。共有三个单词,期望的输出是。
2024-03-12 21:11:48
487
原创 蓝桥杯DP算法——线性DP(C++)
根据以往的尿性,使用一个二维数组f[i,j]来存放所有在第一个序列的前i个字母中出现,且在第二个序列的前j个字母中出现的子序列,然后我们就将每次更新f[i,j]分成了四种方式00,01,10,11,来分别表示子序列是否在a[i],b[j]中出现过,然后只有当11的时候才是公共的子序列才满足题意,然后“曲线救国”加一即可。我们用f[i]表示所以以第i个数结尾的最大上升子序列。也就是说:f[i,j]=max(f[i-1,j-1]+a[i,j] , f[i-1,j]+a[i,j])三、最长上升子序列(优化版)
2024-03-11 23:36:50
601
原创 蓝桥杯DP算法——区间DP(C++)
根据题意要求的是将石子合并的最小权值,我们可以根据DP思想使用二维数组f[i,j]来存放所有从第i堆石子到第j堆石子合并成一堆石子的合并方式。所以,对于[l, k] k可以取到 l 对于[k+1, r] , 因为k+1 <= r, 所以 k <= r - 1, 即 k < r。也就是f[i,j]=min(f[i,k]+f[k+1,j]+s[j]-s[i-1]说明: [l, l] [r, r] 这两个区间都是不为空的,至少包含了一堆石子。这里划分出的区间是[l, k], [k+1, r]
2024-02-23 21:49:51
2054
原创 蓝桥杯DP算法——背包问题(C++)
01背包问题就是有N件物品,一个空间大小为V的背包,每个物品只能使用一次,使得背包中所装物品的价值总和最大。如图所示使用一个二维数组来存放从前i个物品中取,总体积不超过j的包中价值最大值。根据图二所示,我们可以将每次dp到的情况分为两种,一种是选择第 i 件物品,另一种是不选择第 i 件物品。
2024-02-18 02:10:25
2570
2
原创 BFS——C++
这是一个树,想要通过BFS来遍历这个树的顺序应该是1->2->5->3->4->9->7->6->8->10。首先理解了如何使用队列以及为什么要使用队列,然后通过队列的判空来控制循环,BFS其实就理解的差不多了。在学习使用BFS的时候有一难点是如何合理使用队列以及搞清楚为什么要使用队列来帮助完成BFS。但是如何使用队列来完成呢?BFS常使用于寻找最短路径,使用队列实现。为方便理解,这里摘用一下。在讲解BFS的时候的图片。
2024-02-07 18:07:26
345
原创 哈希表——C++
哈希表是一种数组之间互相映射的数据结构,比如举个简单的例子一个十个的数组要用一个五个的数组表示,我们可以使用取模的方法将十个数组中的数组映射到五个数字的小数组中。核心思想是将数据项的键值(Key)通过哈希函数转换成数组的索引,从而直接访问数组中的位置来存储或查找数据项。但是一个大的数组映射到小的数组中是很难避免映射冲突的问题的,为了解决这类问题,我们常用两个方法来解决;
2024-02-02 23:34:58
991
原创 数据结构C++队列(数组模拟)
代码中的数据结构可以使用这图片来解释,整个区间是数组q。hh和tt分别控制队头和队尾。队列也是比较简单的数据结构了,队列的特点是先进先出。默认是从队尾插入数据,队头弹出数据。下面代码中hh是队头,tt是队尾。
2024-01-28 00:56:35
229
原创 数据结构C++栈(数组模拟)
栈的特性就是“先进后出”,可以将栈想象成为一个木桶,先进去的会先沉在桶底,因为拿的时候是要从上面拿。栈的数组模拟比较简单,直接看代码就可以。对于数据结构中的栈,想必都不陌生。
2024-01-27 23:45:41
183
原创 数据结构C++双链表(数组模拟)
注:题目中要求的是第 k个插入的数并不是指当前链表的第 k 个数。所以我们需要在带入add和remove的时候需要给k+1,因为0, 1 节点的作用是边界。0为左边界,1为右边界。他俩在这里有点类似保留字的作用。所以idx是从2开始,所以要给我们相应的k+1。双链表顾名思义是基于单链表只能只有一个朝后指向的指针,双链表是每个节点前后都有的。然后我们默认最左端的头结点是0,最右端的结点是1。init:初始化给最左右的两个节点赋值。add:在k节点右边添加一个新的节点。在基于之前学习的数组模拟的单链表,
2024-01-26 04:14:56
293
原创 仓储管理系统——软件工程报告(项目管理)⑦
在度量软件规模、估算工作量和制定进度计划时,要结合实际情况和项目需求,充分考虑团队成员的技能、项目的风险因素,并灵活调整计划以适应项目的变化。通过定期的风险评估,我们将确保及时识别新的风险,评估已识别风险的变化情况,并调整风险计划以适应项目的实际情况。与项目团队密切合作,通过头脑风暴、专家咨询等方式,全面梳理项目可能面临的各种风险,包括技术风险、进度风险、需求变更等。通过明晰的管理控制措施,我们将能够及时应对潜在风险,保障项目质量,以及有效管理配置变更,从而实现项目目标的顺利达成。
2024-01-22 00:38:09
1420
原创 仓储管理系统——软件工程报告(测试)⑥
性能测试一般测试指标有响应时间,负载能力等,性能太差的系统在使用上的价值是很低的,所以我们必须测试系统的性能是否满足要求。系统性能测试如表所示:经过性能测试,服务器运行正常,相应时间短,负载能力强,说明我们的系统在性能上是优良的。web服务器和数据库服务器由于是系统的核心 部件,为提高系统的运行性能,本系统采用了机架式服务器 ,为 了 保证服务器的稳定性,web服务器采用了台服务器集群的形式 部署,同时数据库服务器也采用了数据库集群的形式进行部署,提高 系统的稳定性,客户端电脑采用了普通的联想台式机。
2024-01-22 00:36:59
2612
原创 仓储管理系统——软件工程报告(实现)⑤
对时间进行查询要求大于开始时间小于结束时间。对时间进行查询要求大于开始时间小于结束时间。通过商品退货时间对商品进行排序。通过进货时间对商品进行排序。商品图片不是默认图片。
2024-01-22 00:35:12
1098
原创 仓储管理系统——软件工程报告(详细设计)④
主要包括用户信息表、 单位信息表、入库单信息表、入库单详情表、出库单信息表、出库单详情表、装备信息 表、器材信息表、仓库信息表,入库作业单信息表,出库作业单信息表等。,用于记录本系统中出库单信息,包括出库单 编号、出库类型、操作人、出库详情单编号、单位编号、单位名称、创建时间、备注, 其中出库详情单编号为入库详情表的主键,通过这一外键将两表相关联起来,其中。,用于记录本系统用户的基本信息,表中的包括用户 编号、用户姓名、登录账号、密码、用户所属单位、角色类型、创建时间、账号状态等, 其中。
2024-01-22 00:34:28
5146
原创 仓储管理系统——软件工程报告(总体设计)③
系统设计的用户友好性使得用户能够轻松上手,通过系统的多功能模块,全面、实时地了解仓库内物品的状态,使仓库管理更加科学、高效。通过在后续的项目开发周期中,重点关注这些问题,并逐步引入相应的改进和优化,将能够提升整个仓库存储管理系统的质量和可用性,使其更好地满足企业的实际需求。因此,需要进行系统性能的优化,包括数据库查询的索引优化、代码逻辑的优化以及对高并发操作的优化。流行的框架如Django、Spring,常用的编程语言如Python、Java等,要根据开发人员的熟悉程度和系统需求做出明智的选择。
2024-01-22 00:27:03
2566
原创 仓储管理系统——软件工程报告(需求分析)②
该系统通过在线用户登录查询,可以线上操作线下具体出/入库操作、查询仓库商品信息、提高仓库运作效率,优化仓库使用流程等功能,实现了用户在网上对仓库操作的全流程。系统的目标是满足用户在使用仓库的过程中的需求,包括线上查询商品、线上操作出/入库商品、线上筛选、提高仓库运作效率、降低成本等环节,并保证在查询和出/入库操作的安全性和可靠性。2) 基于逻辑的方法:系统的性能约束、时间要求、分支条件约束等可以采用逻辑 的方法来描述,不同的逻辑都有对应的公理证明系统来验证描述的正确性。如: 模态逻辑,时序逻辑等。
2024-01-22 00:24:26
6778
1
原创 仓储管理系统——软件工程报告(可行性研究报告及分析)①
严禁损害国家荣誉和利益。l软件开发工具方面:目前市场上有多种成熟的软件开发框架和工具,如Java、Python等,它们可以支持复杂系统的开发,同样可以支持本项目仓库管理系统的开发,选择合适的技术栈对系统的稳定性和性能影响深远,够确保系统具备良好的用户体验和高效的业务处理。我们致力于设计出以商品管理、出人库管理、查询管理及用户管理等功能需求为基础的仓库管理系统,提高了仓库工作人员的工作效率,减少了以往入出存流程繁琐、杂乱、周期长的弊端和出入库管理及库存管理中的漏洞,节约了管理开支,增加了企业收入。
2024-01-22 00:18:30
5608
原创 软件工程十大模型
在需求表示方面,分析人员则对需求进行建模,根据对象分析的思想,对需求进行抽象和表示,客户可以通过模型进行需求确认,进一步优化和改善需求规格说明的质量。在面向对象需求分析模型中,分析人员利用面向对象的分析和设计方法,以“对象”为中心进行需求的分析和表示,从而产生一个包含系统功能和业务问题的要求列表。在面向对象软件分析模型中,分析人员利用面向对象的分析和设计方法,以“对象”为中心进行系统的分析和表示,从而产生一个有系统运行时行为和执行属性的系统模型,同时也会定义系统中的类层次结构、接口等。
2024-01-21 21:40:06
4115
原创 数据结构C++单链表(数组模拟)
定义两个数组e[N],ne[N],e[N]是每个结点的值也就是value值,而ne[N]是保存结点指向下一个结点的指针值,也就是ne[N]。(规定空结点使用-1代替即可)单链表是很常见的一种链表,在工程中常配合new来使用,但是在算法题中,我们只要求快!所以我们在使用单链表的时候会使用数组来模拟使用。图中四个结点的值分别是3、5、7、9,并且每个结点都指向下一个结点所以ne中存的是1、2、3、-1。(最后一个指向空节点所以是-1)接下来讲解四个数组模拟的单链表的操作。
2024-01-17 19:09:36
432
原创 C++中的位运算
2.使用lowbit()函数(返回x的最后一位1),原理就是x&(-x)在C++中我们常使用两种方法来对某个数的二进制进行操作。① 先把第k位移到最后一位 n>>k。② 然后看最后一位是多少 x&1。示例:现在我们想输出数字10的二进制表示。将两个结合到一起就是 n>>k&1。例题使用lowbit函数解决。这个的步骤一般分为两步。
2024-01-17 01:24:47
362
原创 操作系统——银行家算法(含源码实现C++)
在多道程序系统中,多个进程的并发执行来改善系统的资源利用率,提高系统的吞吐量,但可能发生一种危险——死锁。所谓死锁(Deadlock),是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种状态时,若无外力作用,他们都无法在向前推进。要预防死锁,有摒弃“请求和保持”条件,摒弃“不剥夺”条件,摒弃“循环等待”条件等方法。但是,在预防死锁的几种方法之中,都施加了较强的限制条件;而在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。
2024-01-14 23:04:51
1577
原创 浅聊进程通信
远程过程调用(RPC)是一种使得在一台计算机上的程序可以调用另一台计算机上的程序的通信方式,广泛应用于分布式系统中。骨架位于服务器端,接收客户端的请求,调用相应的远程对象方法,并将执行结果返回给客户端。流式套接字的接口函数包括创建套接字(socket),命名套接字(bind),创建队列以便监听(listen),接受连接(accept),请求连接(connect),以及关闭套接字(close)。例如,一个服务器程序可以创建套接字来监听特定端口,当客户端程序连接时,它们可以通过创建的套接字进行数据交换。
2024-01-14 22:49:41
360
原创 浅聊进制与线程
这里,Executors.newFixedThreadPool(10)创建了一个包含10个线程的线程池,可以重用这些线程来执行新任务,而不是每次都创建新线程。异步编程模型,特别是在现代编程语言如JavaScript、Python、C#中的Async/Await模式,已经成为处理并发任务的重要技术。线程池是一种基于池化技术的线程使用方式,它管理一组线程,将任务分配给这些已经存在的线程,而不是针对每个任务创建新线程。线程:是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。
2024-01-14 22:46:25
358
原创 差分法(C++)
题目要求在(L、R)这个区间中的数字都加上整数C,那我们只需要给b[L]加上C这样会使得a[L]~a[n]中的数都加上C,因为我们要是的是区间中的加C,所以还要减去多加的a[R]后面的!这句话有点难以理解,意思就是a里面存放的是正常题目给的东西,而b存放的是a的差分,a也就成为了b的前缀和。然后类似于一维的,控制差分矩阵b来控制对于a与c的相加即可,具体如图所示。构造两个整数数组a,b来分别存储原整数序列,存储原整数序列的差分项。也是定义两个整数矩阵a和b,b矩阵是存放差分矩阵的。
2024-01-14 22:16:12
644
1
原创 前缀和(C++)
与之前的思路相同,定义两个二维的数组,一个保存整数矩阵,一个保存其到矩阵左上角的前缀和也就是。前缀和重要的是思想,需要两个数组,一个保存一维的整数序列,另一个保存每个位置的前和也就是,将两个矩阵都定义好以后关键问题就是依据题目提供的x1,x2,y1,y2来求相应的子矩阵和。前缀和就是高中时期学习的一部分子序列的算术运算,活不多说直接看题。然后我们需要求得的某一部分L到R的和就是。求子矩阵和的关键在于解决图中的两个问题,接下来是二维的整数矩阵。首先是一维的整数序列。
2024-01-13 14:32:24
410
1
原创 白痴算法——区间合并(python3)
首先第一种情况就是1号和2号区间一般,2号区间是包含在1号区间中的,也就是已做区间包含目标区间,这种情况就直接下一个目标区间,这个区间就不用管了。第二种情况是1号和3号区间之间的关系,之间有交集,要合并区间只需求并集即可,也就是把已做区间的右端换成目标区间即可。例如:[1,3][1,3] 和 [2,6][2,6] 可以合并为一个区间 [1,6][1,6]。第三种情况是1号和4号区间,之间没有任何联系,这个时候需要用目标区间更新已做区间,然后个数+1。共一行,包含一个整数,表示合并区间完成后的区间个数。
2023-10-30 19:11:50
342
原创 白痴算法——DFS(python3)
n−皇后问题是指将 n个皇后放在 n×n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。首先先抽象出n个空格格,这里是3,在这三个格格中依次填充上我们1~n的数字,就构成了上图所画出来的树的结构,最终在最后的结点输出即可。我们的要求是在最后一个子节点进行输出,所以当填充的数和输入的n相当时就说明填满了,要输出了。在输出最下层的结点之后,当前的函数会return到上一层,问题的关键在于理解,现在给定整数 n,请你输出所有的满足条件的棋子摆法。
2023-10-22 15:33:59
196
1
原创 C++中的STL(vector存放数据、string容器)
int main()//遍历容器中的数据it!= v.end();it++)cout
2023-06-01 12:00:09
1510
原创 C++模板学习02(类模板)(类模板语法、类模板与函数模板的区别、类模板中的成员函数创建时机、类模板对象做函数参数、类模板与继承、类模板成员函数类外实现、类模板分文件编写、类模板与友元)
类模板作用:建立一个通用类,类中的成员 数据类型可以不具体指定,用一个虚拟的类型来代表。解释:与之前学过的函数模板类似,template是声明创建模板,class是表明其后面的符号是一种数据类型,T是通用的数据类型,名称可以替换,通常为大写字母。下面举个实用例子更好理解。
2023-05-27 20:03:32
243
原创 C++ 模板学习01(函数模版)(函数模板的语法、函数模板注意事项、函数模板案例-数组排序、普通函数与函数模板的区别、普通函数与函数模板的调用规则、模板的局限性)
函数模板作用:通过建立一个通用函数,其函数返回值类型和形参类型可以不具体指定,用一个虚拟的类型来代表。
2023-05-24 00:23:21
192
1
原创 C++文件操作(文本文件,二进制文件)
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件文件的类型分为两种:1.文本文件:文件以文本的ASCLL码形式存储在计算机中2.二进制文件:文件以文本的二进制形式存储在计算机中,用户一般读不懂。
2023-04-25 23:04:20
655
原创 C++类和对象-友元(全局函数做友元,友元类,成员函数做友元)
生活中你的家有客厅(rublic),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为friend友元的三种实现全局函数做友元类做友元成员函数做友元。
2023-02-01 23:11:42
308
原创 C++对象模型和this指针(成员变量和成员函数分开存储,this指针的用途,空指针访问成员函数,const修饰成员函数)
每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码那么问题是: 这一块代码是如何区分那个对象调用自己的呢?C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针。在类的非静态成员函数中返回对象本身,可使用return *this。C++通过提供特殊的对象指针,this指针,解决上述问题。this指针是隐合每一个非静态成员函数内的一种指针。在C++中,类内的成员变量和成员函数分开存储。this指针指向被调用的成员函数所属的对象。常函数内不可以修改成员属性。
2023-02-01 01:02:32
132
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人