算法笔记
执笔思华年
这个作者很懒,什么都没留下…
展开
-
算法设计库---STL
STL标准模板类库,分为三类:container(容器),algorithm(算法),iterator(迭代器)容器用于存放数据对象(元素),算法用于操作容器中的数据对象,算法和容器之间的中介就是迭代器。容器类别 数据结构 说明 实现头文件 顺序容器 vector(向量) 连续存储元素 vector list(链表) 由结点组成的双向链表,每个结点包含一个元素 list deque(双端链表) 连续存储的指向不同元素的指针所组成的原创 2020-10-06 09:41:01 · 225 阅读 · 0 评论 -
散列
概念散列是一种用于以常数平均时间,执行插入、删除、查找的技术。散列中要查找的数据项叫做关键字(key)。映射:如果表的大小是tableSize,将每个关键词与0-tableSize-1的下标一一对应起来的过程叫做映射。...原创 2019-09-04 00:31:01 · 173 阅读 · 0 评论 -
关于 lower_bound() 和 upper_bound()
lower_bound()和 upper_bound() 需要用在一个有序数组或容器中。lower_bound(first,last,val) 用来寻找在数组或容器的[first,last)范围内第一个值大于等于val的元素的位置,如果时数组,则返回该位置的指针,如果是容器,则返回该位置的迭代器。upper_bound(first,last,val) 用来寻找在数组或容器的[first,...原创 2019-09-02 12:04:17 · 156 阅读 · 0 评论 -
全排列
next_permutation()函数给出一个序列在全排列中的下一个序列,使用do...while循环即可打印,即可打印出一个序列的全排列。//next_permutation()给出一个序列在全排列中的下一个序列 #include<cstdio>#include<algorithm>using namespace std;int main()...原创 2019-09-02 11:36:56 · 144 阅读 · 0 评论 -
map的常用用法(STL库)
map翻译为映射,也是常用的STL容器。在定义数组时,其实是定义了一个int型到其他型的映射。如int arry[100],其实就是定义了一个从int型到int型的映射,比如arry[0]=20,arry[1]=30就分别是将0映射到20,1映射到30。它有一个弊端,当需要以其他类型作为关键字是时,就不太容易操作。比如有一本字典,上面由很多单词与单词对应的页码,若用数组表示“单词-->页码”...原创 2019-08-18 15:50:17 · 399 阅读 · 1 评论 -
vector的常用用法(STL库)
参考这一篇很详尽C++ vector 容器浅析vector 翻译为向量, 但是这里使用 “变长数组”的叫法更容易理解,也即 “长度根据需要而自动改变的数组”。 在考试题中,有时会碰到只用普通数组会超过内存的情况, 这种情况使用vector可以解决很多问题。 另外,vector还可以用来以邻接表的方式存储图,这对无法使用邻接矩阵的题目(节点数太多)、又害怕使用指针实现邻接表的朋友是非常友好的。...原创 2019-08-21 00:11:55 · 596 阅读 · 0 评论 -
排序题与sort函数的应用
关于结构体数组类型的排序题~1、相关结构体的定义对于题目中给出了很多个体信息的排序题,考虑定义结构体存放。如student个体:struct Student{ char name[10]; //姓名 char id[10]; //准考证号 int score; //分数 int r; //排名}stu[100010];2、cmp函数的编写使用...原创 2019-08-15 08:58:20 · 162 阅读 · 0 评论 -
C++中的sort()函数
sort()就是用来排序的函数,它根据具体情形使用不同的排序方法,效率较高。并且sort在实现中规避了经典快速排序中可能出现的会导致实际复杂度退化到O(n^2)的极端情况。1.如何使用sort排序sort函数的使用必须加上头文件 #include<algorithm> 和 using namespace std; 其使用方式如下:sort(首元素地址(必填),尾...原创 2019-08-14 20:46:24 · 249 阅读 · 2 评论 -
三种排序
冒泡排序给出一个序列a,其中元素个数为n,要求把他们按从小到大的顺序排序。冒泡排序的本质在于交换,即每次通过比较交换的方式把当前带比较元素的最大值移动到一端,而当剩余的元素减少为0时,排序结束。下面举个栗子。。代码实现:#include<cstdio>int main(){ int a[10]={3,1,4,5,2}; for(int i=0;i<...原创 2019-08-14 16:19:41 · 254 阅读 · 0 评论 -
【字符串】回文串 codeup5901
题目描述读入一串字符,判断是否是回文串。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。输入一行字符串,长度不超过255。输出如果是回文串,输出“YES”,否则输出“NO”。样例输入12321样例输出YES一开始这样写的,,虽然很繁琐zz,但感觉应该没错,然鹅没有通过~#include<cstdio...原创 2019-08-14 00:59:25 · 156 阅读 · 0 评论 -
进制转换
这篇通俗易懂haha~https://blog.csdn.net/yuanxiang01/article/details/82503568还有这篇https://blog.csdn.net/whuslei/article/details/6272708以下内容来自《算法笔记》!仅仅便于复习~对于一个P进制的数,若要转换成Q进制,需要分为两布:将p进制数x转换成十进制数y。...原创 2019-08-13 21:38:14 · 163 阅读 · 0 评论 -
日期处理【codeup1928】日期差值
问题 A: 日期差值时间限制: 1 Sec 内存限制: 32 MB题目描述有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。输入有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出每组数据输出一行,即日期差值样例输入2013010120130105样例输出5AC代码#include<...原创 2019-08-13 20:49:05 · 135 阅读 · 0 评论 -
查找元素——【codeup1934】找x
第一次写博客,记录一下!codeup里面的题目找x!#include<cstdio>int main() { int n,x; int a[210]={0}; //int flag=-1; //不能放在while外面,若这样每次输入查找都会在外面改变flag的值! //若上一次查找到flag在2,下一次输入查找一个不存在的值,因为没有重新给flag赋值...原创 2019-08-13 19:51:19 · 155 阅读 · 0 评论