自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 收藏
  • 关注

原创 C++:异常处理

异常处理指让一个函数在发现自己无法处理错误时抛出一个异常,并由其调用者可以直接或间接处理这个错误。异常处理被用来处理同步错误。异常处理通常用于发现错误的部分与处理错误的部分不在同一位置(不同范围)时,与用户进行交互式对话的程序不饿能用异常处理来处理输入错误。异常处理特别适合用于程序无法恢复但又需要提供有序清理,以使程序可以正常结束的情况。异常处理不仅提供了程序的容错性,还提供了各种捕获异常的方法。

2024-02-15 15:35:42 979

原创 C++:输入流/输出流

在C++中,除系统提供的预定义操纵符之外,还允许用户定义操纵符,便于控制一些频繁使用的格式操作,使格式控制更加方便。ostream &自定义输出操纵符算子函数名(ostream& stream){return stream;istream &自定义输出操纵符算子函数名(istream& stream){return stream;当实现一个类的类型时,有时需要这个类支持输入和输出的操作,以便可以将类对象嵌入输入或输出流中。对于用户自定义的数据类型的输入/输出,可以通过重载>>运算符和<<运算符实现。

2024-02-02 21:33:13 1905

原创 C++:模板

函数重载是指在相同的函数名下,能够实现不同操作。系统根据参数的类型或参数个数的不同区分这些重载的函数。这样虽然很方便,但是出现了大量的代码冗余。该如何解决这个问题呢?C++提供了模板。模板时类型参数化的工具。所谓类型参数化就是指把类型定义为参数,当参数实例化时,可以指定不同的数据类型,从而真正实现代码的可重用性。模板分为函数模板和类模板,他们分别允许用户构造模板函数和模板类。

2024-01-27 22:18:57 943

原创 C++:组合、继承与多态

class 基类名virtual 返回值类型 将要在派生类中重载的函数名(参数列表);例如,用虚函数修改上例class Apublic:public:public:i.play();tune(b);C c;tune(c);A* p = &b;tune(*p);p = &c;tune(*p);A a;tune(a);return 0;

2024-01-26 22:20:05 1194

原创 C++:运算符重载

C++规定,当不同类型的数据进行运算时,需先将数据转换成同一类型,然后才可以进行运算。数据的类型转换可以通过两种转换形式完成:一种是隐式类型转换;另一种是显式类型转换。隐式类型转换当执行赋值表达式V=E时,若V和E的类型不一致,则将E先转换为V的类型后再赋值。。当两个操作数类型不一致时,运算之前将级别低的自动转换为级别高的,然后再进行运算。显式类型转换显示类型转换有以下两种方式。1. 强制转换法:(类型名)表达式;2.函数法:类型名(表达式)。

2024-01-16 22:36:40 1480

原创 C++:常量

使用const的好处是允许指定一种语义上的约束,即某种对象不能被修改,且由编译器具体实施这种约束。修饰普通变量,时期不能被随意修改【注意】1.C++中的const为内部连接,即由const定义的常量仅在被定义的文件中才能看见,除非使用extern。一般情况下,编译器不为const分配空间(而extern则强制分配空间)。2. 当定义一个常量(const)时,必须进行初始化,即赋初值给它,除非已经用extern最清楚说明。可以使用const修饰数组,表示“常”数组,即数组的值不能被修改。例如。

2024-01-10 20:39:28 1058

原创 数据结构:平衡二叉树

所以我们可以将三个结点的关键字进行“比较”中间值为根结点,最小值为左子树,最大值为右子树,如图所示。在对查找表{13,24,37,90,53}构建平衡二叉树时,由于符合第4条的规律,所以进行先右旋后左旋的处理,最终由不平衡的二叉排序树转变为平衡二叉树。注意:图 7 中插入结点也可以为结点C的右孩子,则(b)中插入结点的位置还是结点C右孩子,(c)中插入结点的位置为结点A的左孩子。注意:图8中插入结点也可以为结点C的右孩子,则(b)中插入结点的位置改为结点B的左孩子,(c)中插入结点的位置为结点B的左孩子。

2023-10-15 15:41:52 609

原创 数据结构:二叉排序树

2)用结点 p 的直接前驱(或直接后继)来代替结点 p ,同时在二叉排序树中对其直接前驱(或直接后继)做删除操作,简单理解:因为p的左子树的最右端s是p的左子树所有结点关键字中最大的,所以只需用其代替p,然后将s的左子树为其父结点的右子树即可。1)令结点 p 的左子树为其双亲结点的左子树;结点 p 的右子树为其自身直接前驱结点的右子树,简单理解:因为p的左子树所有结点都小于p的右子树结点,所以只需将p的左子树重接在p的父结点的左子树上,然后将p的右子树整体接入p左子树的最右端s即可。

2023-10-12 17:23:45 1090

原创 C++:函数

C++的每个程序至少有一个函数,即主函数main(),函数也是类的方法的实现手段。C++的函数包括两类:预定于函数和用户自定义函数。函数的定义格式为:<返回值类型><函数名>(<参数列表>)<函数体>其中,<返回值类型>实值函数返回值的数据类型,可以是任意一种基本数据类型或用户自定义数据类型,以及类类型。<函数名>是给函数指定的名字,函数名应遵循标识符的命名规定。<参数列表>是指参数的个数、名称和类型,函数定义中的参数成为形参。<函数体>实值函数完成的功能,由说明语句和执行语句组成。在C++语言中,函数的参

2023-08-24 17:34:26 3066

原创 C++:类与对象

class 类名 {public :数据成员或成员函数 protected : 数据成员或成员函数 private :数据成员或成员函数 };类名class是声明类的关键字,类名是标识符,且在其作用域内必须是唯一的。注:C++规定,标识符以字母(大小写均可,但区分大小写)或下划线开头,后面跟0或多个有字母、数字字符或下划线组成的字符串。成员说明类包括两类成员:一类是代表对象属性的数据成员;另一类是实现对象行为的成员函数。成员函数的定义不仅仅可以与声明同时在类内完成,也可以在类外完成。

2023-08-16 23:27:17 273

原创 C/C++

宏定义 #defineconst 常量宏定义,相当于字符替换常量声明预处理器处理编译器处理无类型安全检查有类型安全检查不分配内存要分配内存存储在代码段存储在数据段可通过 #undef 取消不可取消方法:将析构函数设置为私有原因:C++ 是静态绑定语言,编译器管理栈上对象的生命周期,编译器在为类对象分配栈空间时,会先检查类的析构函数的访问性。若析构函数不可访问,则不能在栈上创建对象。

2023-08-13 20:13:20 256

原创 数据结构:选择排序

选择排序是一种简单直观的排序算法。首先在未排序序列中找到最大(最小)的元素,存放到排序学列的其实位置,然后在剩余的未排序的元素中寻找最小(最大)元素,存放在已排序序列的后面。

2023-08-13 20:04:04 756

原创 数据结构:交换排序

使用起泡排序算法,其时间复杂度同实际表中数据的无序程度有关。若表中记录本身为正序存放,则整个排序过程只需进行。

2023-08-10 17:47:23 730

原创 数据结构:插入排序

插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。直接插入排序是插入排序算法中的一种,采用的方法是:在添加新的记录时,使用顺序查找的方式找到其要插入的位置,然后将新记录插入。很多初学者所说的插入排序,实际上指的就是直接插入排序算法,插入排序算法还包括折半插入排序、2-路插入排序,表插入排序和希尔排序等。

2023-08-03 20:37:58 9595

原创 数据结构:树的存储结构

学习树之前,我们已经了解了二叉树的顺序存储和链式存储,哪么我们如何来存储普通型的树结构的数据?如下图1:如图1所示,这是一颗普通的树,我们要如何来存储呢?

2023-07-29 21:52:01 1015

原创 数据结构:线索二叉树

通过前一节对线索二叉树的学习,其中,在遍历使用中序序列创建的线索二叉树时,对于其中的每个结点,即使没有线索的帮助下,也可以通过中序遍历的规律找到直接前趋和直接后继结点的位置。如果在二叉树中想保存每个结点前趋和后继所在的位置信息,最直接的想法就是改变结点的结构,即添加两个指针域,分别指向该结点的前趋和后继。注意:中序对二叉树进行线索化的过程中,在两个递归函数中间的运行程序,和之前介绍的中序遍历二叉树的输出函数的作用是相同的。线索链表中的“线索”,指的是链表中指向结点前趋和后继的指针。线索二叉树中的结点结构。

2023-07-28 21:19:44 1051

原创 数据结构:分块查找

总体来说,分块查找算法的效率介于顺序查找和折半查找之间。由于索引表中显示第二子表的起始位置在查找表的第 7 的位置上,所以从该位置开始进行顺序查找,一直查找到该子表最后一个关键字(一般将查找表进行等分,具体子表个数根据实际情况而定)。分块有序指的是第二个子表中所有关键字都要大于第一个子表中的最大关键字,第三个子表的所有关键字都要大于第二个子表中的最大关键字,依次类推。个子表,对每个子表建立一个索引,索引中包含中两部分内容:该子表部分中最大的关键字以及第一个关键字在总表中的位置,即该子表的起始位置。

2023-07-28 20:36:41 1076

原创 数据结构:顺序表

如果对于查找表中各个数据元素有可能被查找的概率提前已知,就应该根据其查找概率的大小对查找表中的数据元素进行适当的调整:被查找概率越大,离查找出发点 i 越近;所以,查找算法的平均查找长度应该为查找成功时的平均查找长度加上查找失败时的平均查找长度。静态查找表用顺序存储结构表示时,顺序查找的查找过程为:从表中的最后一个数据元素开始,逐个同记录的关键字做比较,如果匹配成功,则查找成功;所以查找算法衡量好坏的依据为:查找成功时,查找的关键字和查找表中的数据元素中进行过比较的个数的平均值,称为平均查找长度(

2023-07-27 20:07:36 382 1

原创 数据结构:二叉树遍历

二叉树的遍历是指按照某条搜索路径访问二叉树中的每个结点,使得每个结点均被访问一次,而且仅被访问一次。二叉树的遍历方式主要有:先序遍历、中序遍历、后序遍历、层次遍历。先序、中序、后序其实值得是父节点被访问的次序。若在遍历过程中,父节点均先于它的子节点被访问,就是先序遍历;若父节点被访问的次序在它的子节点被访问次序之间,就是中序遍历;若访问完左右孩子之后在访问父节点,就是后序遍历。无论是先序遍历、中序遍历还是后序遍历,左右孩子节点的相对访问次序是不会发生变化的,总是先访问左孩子,在访问右孩子节点。

2023-07-22 00:17:18 398

原创 数据结构:基本概念

是能输入计算机且能被计算机处理的;信息的载体;是对客观十五符号化的表示;能够呗计算机识别、存储和加工。包括数值型的数据:正数,实数等。非数值型的数据:文字、图像等。:是数据的,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素有若干个组成,。:是性质相同的数据元素的集合,是数据的一个子集。:描述数据元素之间的逻辑关系。与数据存储无关,独立于计算机;是从具体问题抽象出来的数据模型。:数据元素及其关系在计算机存储器中的结构(存储方式),是数据结构在计算机中的表示。

2023-07-11 17:19:49 448

原创 pycharm提示:无法加载文件 C:\Users\HUAWEI\Desktop\djangoProject\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本

无法加载文件 C:\Users\HUAWEI\Desktop\djangoProject\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本。m/fwlink/?LinkID=135170 中的 about_Execution_Policies。(防止运行没有数字签名的脚本),要设置成。可以查看到有没有这个权限。这个字符就代表更改成功。l运行,并在命令窗口输入。然后以管理员的方式打开。更改执行策略,然后输入。

2023-07-08 10:02:17 491

原创 C++标准库-vector

vector模塑出一个动态数组,是将元素存放在动态数组中加以管理的一个抽象概念。同时C标准库也并灭有规定必须以动态数组实现vector。vector是将元素复制到内部动态数组中。元素之间总是存在一定的顺序。所以vector是一种有序集合。它支持随机访问。

2023-06-28 16:52:13 277

原创 C++图书馆管理系统(简单版)

实用的图书馆管理系统应该至少包括一下功能:1、上传:新进图书以及基本信息的输入2、删除:旧图书以及基本信息的删除3、显示:显示图书馆已有的所有图书4、查找:查询要借阅的图书信息5、借阅:实现用户办理借阅手续6、归还:实现用户办理归还手续系统以菜单方式工作使界面友好,易于操作。

2023-06-20 12:44:03 10105 12

原创 离散化

离散化有很大的局限性(目前以个人认知来说),几乎只适合在树状数组求逆序对使用。

2023-06-17 08:00:00 487 1

原创 算法基础——枚举

​ 枚举算法是我们在日常中使用最多的一种算法思想,它的核心思想是:枚举所有的可能,确定枚举对象、范围和判定条件;然后注意枚举可能的解并验证每个解是否是问题的解。

2023-06-16 12:16:30 1137

原创 枚举例题

列的格子,每个格子是白色蓝色红色之一,小 a 希望把这个布改成该国国旗,方法是在一些格子上涂颜料,盖住之前的颜色。小a很懒,希望涂最少的格子,使这块布成为一个合法的国旗。思路:这是一个典型的暴力枚举题,因为数据范围很小,我们只需要十个嵌套for循环,枚举每一种可能即可。思路:题目中的数据范围很小,我们可以直接枚举,从每一个点开始,横向和竖向搜索。行是一个矩阵,矩阵的每一个小方块是W(白),B(蓝),R(红)中的一个。时,横向和竖向是一样的,这相当于我们计算量两次,所以需要特判并输出答案。

2023-06-16 12:15:55 500

原创 同余定理

如果。

2023-06-16 12:11:43 1666

原创 快速乘算法

看到这份代码有没有感到十分奇怪?它直接用了乘法操作的啊?但是它就是可以直接算出正确答案来。因为它很巧妙的运用了自动溢出这个操作,我们的代码中的。)保证了它们溢出后的差值基本不变,所以即使它会溢出也不会影响最终结果的!能保证数字的精确程度,然后再把这个数字进行计算。,所以我们急需寻找一种高效的方法来完成乘法运算并且不会爆。在我们进行乘法运算的时候,很多情况下会爆。,虽然这两个部分都是会溢出的,但(利用的是很简单的一个浮点数类型。,所以我们要求的就变成了。,对其进行二进制拆分,把。移位快速乘,思想是把。

2023-06-16 12:08:56 462

原创 欧拉定理

欧拉定理的证明还是很简单的,我们只需要构造一个与。很多人都喜欢称之为欧拉反演。在学习欧拉定理之前,请先了解。意义下的一个简化剩余系。互质的数列,再进行操作。意义下的简化剩余系,则。中所有互质的数的和为。

2023-06-16 12:08:44 344

原创 费马小定理

若。

2023-06-16 12:07:58 581

原创 约数

约数,又称之为因数。整数aaa除以整数bb!0b(b!=0)bb!0除得的商正好是整数而没有余数。我们就说aaa能被bbb整除,或bbb能整除aaa。aaa称为bbb的倍数,bbb称为aaa的约数。

2023-06-16 11:25:31 365

原创 欧拉定理

欧拉定理的证明还是很简单的,我们只需要构造一个与。很多人都喜欢称之为欧拉反演。在学习欧拉定理之前,请先了解。意义下的一个简化剩余系。互质的数列,再进行操作。意义下的简化剩余系,则。中所有互质的数的和为。

2023-06-16 11:23:16 467

原创 欧拉函数的应用

那么我们就可以通过欧拉函数,求出小于或等于它并与之互质的数的个数,因为图是关于。君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。下面让我们来检验一下对欧拉函数的理解。的方阵,为了保证队伍在行进中整齐划一,点,这样我们通过观察可以看到其余的点的。对称的,所以我们所求的欧拉函数要乘以。,并且要加上对称轴上看到的一位同学。思路:简单的模板题,不做解释。思路:简单的模板题,不做解释。,请你求出每个数的欧拉函数。中每个数的欧拉函数之和。中每个数的欧拉函数之和。共一行,一个正整数,表示。

2023-06-16 11:22:18 669

原创 欧拉函数

欧拉函数(Euler’s totient function),求小于或者等于nnn的数中与nnnφn\varphi(n)φn。欧拉函数的通式φnn1−1p11−1p21−1pnφnn1−p1​1​1−p2​1​1−pn​1​,其中p1p2Pnp1​p2​Pn​都是nnn的质因数。φ11φ11。当nnn时质数的时候,显然有φnn−1φnn。

2023-06-16 11:21:47 430

原创 最大公约数&最小公倍数

两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。一组数的公约数,是指同时同时整除这组数中每一个数的数。最大公约数,是指所有公约数中最大的数。于是我们也就得到了关于两个数的最大公约数的一个递归求法。现在我们一张两个数,那么要如何求它们的最大公约数呢?所以我们要求两个数的最小公倍数,先求出最大公约数即可。我们先考虑两个数的情况。这个函数也揭示了一个概念,即。是它们两个的公约数,所以有。就是两者的最大公约数。时,我们可以证明得到。时,我们称之为互质。

2023-06-16 11:20:34 320

原创 关系数据库

关系域:是一组具有相同关系数据类型的值的集合笛卡尔积:域上的一种集合运算元组:笛卡尔积中每一个元素d1d2d3⋯dnd1​d2​d3​⋯dn​称之为一个nnn元组分量:笛卡尔积元素d1d2d3⋯dnd1​d2​d3​⋯dn​中的一个值did_idi​称之为一个分量基数:一个域允许的不同取值个数称之为基数D1×D2×⋯×DnD1​×D2​×⋯×Dn​。

2023-06-16 11:13:07 261

原创 数据库绪论

数据库的4个基本概念数据(data)数据是数据库中存储的基本对象,若想给数据下一个定义:描述事物的符号记录称之为数据。例如文本,图像,音频,视频等都可以是数据。数据的表现形式还不能完全表达其内容,需要经过解释,数据和关于数据的解释是不可分割的。数据的解释是指对数据含义的说明,数据的含义称为数据的语义,数据与其语义是不可分割的。数据库(DB)顾名思义,数据库是存放数据的仓库,数据是按照一定的格式存放的。严格来说,数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按

2023-06-16 11:11:40 289

原创 树状数组的模板题

思路:这道题的思想很简单,二维区间修改,我们首先想到的就是二维差分,然后在使用树状数组进行单点查询即可。思路:看到这样的问题,我们都会头大(没思路,烦死了!我们可以基于第二题的。思路:这同样也是一道模板题,对于区间修改,我们首先会想到的是。操作输出一行,每行有一个整数,表示所求的结果。操作输出一行,每行有一个整数,表示所求的结果。操作输出一行,每行有一个整数,表示所求的结果。操作,输出一个整数,表示对于这个操作的回答。操作,输出一个整数,表示对于这个操作的回答。操作,输出一个整数,表示对于这个操作的回答。

2023-06-15 21:06:27 371

原创 孙子定理模板题

思路:同样这也是一道模板题,但是我们要注意数据的范围大小,在编写代码时,使用乘法运算结果会有溢出。其中第二组的数字是两两互素的。如果你不知道什么是中国剩余定理,你可以@思路:这是孙子定理的模板题,注意数据范围。输出一行,为满足条件的最小非负整数。输出一行一个整数,为所求的答案。表示,第二组中的数字分别用。的方程组的最小非负整数解。个,第一组中的数字分别用。行,每行两个非负整数。

2023-06-15 21:04:12 231

原创 矩阵(矩阵快速幂)

在数乘运算中,我们类比向量来进行理解,在数乘向量运算中,只需要将向量中的每个元素乘上那个数就可以了,数乘矩阵也是如此。也就是说单位矩阵都是正方形的,这是因为只有正方形的矩阵能保证结果和前一个矩阵形状相同,单位矩阵的元素非。矩阵在计算机数学中有比较重要的内容,它可以优化很多推论,在这里我们将简单介绍一下。在实数运算中,减法为加法的逆运算,同样的,在矩阵运算中也是如此。了解了这么多,我们现在来看矩阵快速幂,矩阵快速幂就是将矩阵和。在矩阵的加法运算中,满足交换律和结合律,也就是。的矩阵,它的单位矩阵大小为。

2023-06-15 21:01:17 2075

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除