
C++
文章平均质量分 53
白徽
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
逆序数算法
原题 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。给出一个整数序列,求该序列的逆序数。 输入 第1行:N,N为序列的长度(n <= 50000) 第2 - N + 1行:序列中的元素(0 <= A[i] <= 10^9) 输出 输出逆序数 输入样例 4 2 4 3 1 输出样例 4 开始分析 不知道大家有没有写过二原创 2021-03-09 11:06:59 · 7398 阅读 · 0 评论 -
最长公共子序列算法
视频解说 请大家先点击视频解说,看一下,然后再过来继续观看。甚至你可能不需要再看本文了。 最长公共子序列的长度直接就是二维数组的最后一个数字。直接提取就可以。 但是难就难在回溯的问题上。 输出一个最长公共子序列并不难(网上很多相关代码),难点在于输出所有的最长公共子序列,因为 LCS 通常不唯一。总之,我们需要在动态规划表上进行回溯 —— 从table[m][n],即右下角的格子,开始进行判断: 如果格子table[i][j]对应的X[i-1] == Y[j-1],则把这个字符放入 LCS 中,并跳入ta原创 2021-03-08 15:42:49 · 3003 阅读 · 0 评论 -
基于质数分布的质数检测原理
首先看一个关于质数分布的规律:大于等于5的质数一定和6的倍数相邻。例如5和7,11和13,17和19等等; 当然你是不想反驳一下? 反驳就对了。这里先说一下:是说有可能是两边的都是质数。并不是两边的绝对就是质数。 什么意思? 即如果你是6的倍数的两边的数字,那我们可以考虑可能你就是质数,但是你却不是6的倍数的两边数字,那你绝对不是质数。 越讲越糊涂?那咋们先看证明 证明过程如下: 令x≥1,将大于等于5的自然数表示如下: ······6x-1,6x,6x+1,6x+2,6x+3,6x+4······(相原创 2021-03-06 18:02:39 · 456 阅读 · 1 评论 -
优先队列--priority_queue基础
基础法门 对基本数据类型的操作 //reviem the priority_queue #include <iostream> #include <queue>//头文件 using namespace std; int main(void) { //定义 priority_queue<typename> name; //默认为从大到小的队列。 ...原创 2019-11-10 19:12:24 · 138 阅读 · 0 评论 -
set复习
set review //review the set #include <iostream> #include <set> using namespace std; int main(void) { //定义方式 //set<typename> name; set<int> s; //typename 也可以是STL容器或者结构体,若...原创 2019-11-06 17:33:20 · 404 阅读 · 0 评论 -
讲给小白的vector基础法门
什么是vector? 所谓vector,在C++里面是一个可以变长的数组。举个例子:普通的数组我们在定义的时候就已经确定了它的长度。如果创建的是长度为100的数组的话。那我们只能存小于等于100个元素。不可存更多的元素。而vector可以改变这种情况。你想存多少就存多少。而且不存在浪费的问题。 如何定义一个vector变量 vector<变量里面元素的类型> 变量名; 拿个实例: ve...原创 2019-10-27 21:28:50 · 230 阅读 · 1 评论