- 博客(24)
- 问答 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 c++基本概念
1970年,AT&T贝尔实验室的工作人员D.Ritchie和K.Thompson共同研发了C语言。研制C语言的初衷是用它编写UNIX系统程序,因此,实际上C语言是UNIX的“副产品”。1971年,瑞士联邦技术学院N.Wirth教授发明了第一个结构化的编程语言Pascal。20世纪70年代中期,本贾尼·斯特劳斯特卢普在剑桥大学计算机中心工作。斯特劳斯特卢普希望开发一个既要编程简单、正确可靠,又要运行高效、可移植的计算机程序设计语言。而以C语言为背景,以Simula思想为基础的语言,正好符合斯特劳斯特卢普的初衷
2022-06-14 13:11:17
358
原创 FLOYD多源最短路算法
我们把边带有权值的图称为带权图,边的权值可以理解为两点之间的距离。从一个点出发,沿着图的边到另一点的路径中,隔壁权值之和最小的一条称之为最短路径。(请欣赏我拙劣的画技所画出的示意图) 最短路径是图论的经典算法,具体形式有:(1)确定起点的最短路,使用dijkstra算法。(2)确定终点的最短路,若在无向图,此问题等价于(1),在有向图中,该问题为反转路径方向的问题(1)(3)全局最短路,使用FLOYD-WARSHWALL算法简称floyd算法,是最最最最最简单的最短路径算法,可以计算图中任意两点的最短路径。
2022-12-08 09:09:57
290
1
原创 如何枚举约数?
约数,又称因数。整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。
2022-09-20 16:51:11
448
原创 在编程语言中的数学问题
玫瑰花数:所谓“玫瑰花数”,指一个四位的正整数,等于它的个位数字4次方,加十位数字4次方,加百位数字4次方,加千位数字4次方的和。最小公倍数的算法实现很简单,设两个数a,b,先求出a和b的最大公约数,再用a与b的乘积,再除以最大公约数,得出最小公倍数。如果两个数互质(两个数都只有公因数1时,两数互质,奇数和奇数互质,质数和任何数互质,1和任何数互质),最大公约数为1。素数为因数只有1和它本身的数,1既不是素数也不是合数,0(不带他玩,没意义),质数有无穷个,只有一个偶数(2)。......
2022-08-10 08:39:27
983
原创 STL标准模板库
标准模板库是一个C++软件库,大量影响了C++标准程序库但并非是其的一部分。其中包含4个组件,分别为算法、容器、函数、迭代器。模板是C++程序设计语言中的一个重要特征,而标准模板库正是基于此特征。标准模板库使得C++编程语言在有了同Java一样强大的类库的同时,保有了更大的可扩展性。在C++标准中,STL被组织为下面的13个头文件。...
2022-07-27 11:29:04
189
原创 C++STL容器之priority_queue
观察这两张图片,他们都是二叉树,若果观察的仔细,能看出他们是完全二叉树。左图中,根节点是所有元素中最大的,右图中则恰好相反。左图每个节点都比他的左右子节点大,有图每个节点都比他的左右子节点小,这就是堆结构。堆是具有下列性质的完全二叉树每个节点的值都大于或等于其左右子节点的值,称为大顶堆,相反则为小顶堆从堆的定义得知,根节点一定是其中最大(小)的一个,较大(小)的节点越靠近根节点(不绝对是这样)优先队列使用的数据结构为二叉堆。...
2022-07-26 13:59:15
1251
原创 C++STL容器之set
STL中的set容器是一个在计算机科学领域十分重要的概念。set翻译为集合的意思,是一个的容器,set最主要的作用是自动去重并按升序排序,因此在遇到需要去重但是不方便开数组的时候,使用set就非常方便,set容器中的元素是唯一的,其内部采用“红黑树”实现。set容器定义于头文件,并且为于namespacestd空间里,若想用set容器,则需先写入如下代码。...
2022-07-17 10:41:53
439
原创 经典枚举——百钱百鸡问题
话不多说,先来看问题【百钱百鸡】中国数学家张邱建(公元五世纪,其它资料不详)在他的《算经》中提出了著名的“百钱买百鸡”问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一。百钱买百鸡,问翁、母、雏各几何?你的任务:输出所有可行的方案。无输出共有若干行:每行三个整数,相互之间用1个空格隔开,依次为公鸡、母鸡、小鸡的数量。所有方案,第一优先级按公鸡的数量从小到大排列。问题分析——把公鸡、母鸡和小鸡的数量分别设为cock,hen,chicken,百钱百鸡问题就可以转换成解不定方程组的问题。因此 ,百钱百鸡问题可以
2022-07-06 21:01:23
3021
原创 STDLIB.h头文件简介及其文件内容
stdlib头文件即standard library标准库函数头文件stdlib 头文件里包含了C、C++语言的最常用的系统函数该文件包含了C语言标准库函数的定义
2022-06-19 14:35:36
11734
原创 枚举法详解
枚举法是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。 [1] 在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,合适就保留,不合适就丢弃。例如:找出1到100之间的素数,需要将1到100之间的所有整数进行判断。枚举算法因为要列举问题的所有可能的答案,
2022-06-14 09:17:47
2871
原创 数组用法详解(适合初学者)
在C语言中, 数组 [2] 属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。关于可变长数组(VLA)的问题:原来的C89标准中是不允许可变长数组出现的,但是在C99标准中,加入了对VLA的支持 [3] ,但是支持的编译器不多,而且由于栈溢出的安全问题,没有太多的人敢用这个可变长数组,所以在C11标准中又把它规定为可选实现的功能了 [4] 。如果有过用其它语言编程的经历,
2022-06-12 14:11:47
204
原创 什么是递归?
递归,就是在运行的过程中调用自己。函数嵌套调用过程示例构成递归需具备的条件:1. 子问题须与原始问题为同样的事,且更为简单;2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他所有情况都能被还原为其基本情况。例如,下列为某人祖先的递归定义:某人的双亲是他的祖先(基本情况)。某人祖先的双亲同样是某人的祖先(递归步骤)。斐波纳契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1
2022-06-12 13:55:53
1382
原创 贪心算法详解
贪心算法(greedy algorithm ,又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择 。贪心算法一般按如下步骤进行:①建立数学模型来描述问题 。②把求解的问题分成若干个子问题 。③对每个子问题求解,得到子问题的局部最优解。④把子问题的解局部最优解合成原来解问题的一个解。贪心算法是一种对某些求最优解问题的更简单、更迅速的设计技术。贪心算法的特点是一
2022-06-09 09:51:23
816
原创 归并排序详解
大家可能都在为一道排序的题而苦恼,用冒泡排序不行,sort也不能水过,那我们就可以用归并排序来解决。 归并排序(MERGE-SORT)是建立在归并排序导航的一种有效的排序方法,该算法是分治法非常典型的应用。将已有的子序列合并,得到完全有序的序列;即先使每个有序子序列有序,再使子序列段有序。若两个有序表合二为一成为一个有序表,称为二路归并。归并操作也叫归并算法 ,指将两个有序序列合并成一个序列的方法。归并排序时间复杂度为O(N*log N),空间复杂度为O(N) .代码如下:...
2022-06-06 18:49:38
95
原创 什么是算法?
算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵 魂。二、算法的特征1.可行性 算法中执行的任何计算步骤都可以分解为基本可执行的操作步,即每个计算步都可以在有限时间里完成(也称之为有效性) 算法的每一步都要有确切的意义,不能有二义性。例如“增加x的值”,并没有说增加多少,计算机就无法执行明确的运算。
2022-06-06 13:42:19
18170
2
原创 vector
一、vector的基本用法c++为开发着提供了标准模板库(STL),其中装了很多容器,容器可以理解为能实现功能的系统函数,如vector,stack,queue,map,set等。vector,翻译过来意为向量,一般说为“变长数组”,在数据规模较大时,使用vector叫为方便,还可以节省空间。使用vector时,需要先添加vector头文件,即#include<vector>,同时,还需“using namespace std”。(1)vector的定义定义vector方法如
2022-05-31 15:36:31
111
原创 二分查找(c++)
简介二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列
2022-05-31 12:56:12
320
原创 二分查找c++
二分查找二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是:(这里假设数组元素呈升序排列)将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止;如 果x<a[n/2],则我们只要在数组a的左半部继续搜索x;如果x>a[n/2],则
2022-05-19 10:55:30
76
空空如也
洛谷P5250【深基17.例5】木材仓库
2022-11-11
[Error] "GCD" was not declared in this scope
2022-08-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人