青萍之末的博客

学无止境

排序:
默认
按更新时间
按访问量

卡特兰数相关问题总结

一、什么是Catalan数 说到Catalan数,就不得不提及Catalan序列,Catalan序列是一个整数序列,其通项公式是 递推公式是 C(n) = C(1)*C(n-1) + C(2)*C(n-2) + ...

2018-06-23 10:59:22

阅读数:5

评论数:0

常用正则表达式

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+...

2018-06-23 10:55:30

阅读数:6

评论数:0

傅里叶变换和小波变换分析

一、前言       我们经常接触到的信号,正弦信号,余弦信号,甚至是复杂的心电图、脑电图、地震波信号都是时域上的信号,我们也成为原始信号,但是通常情况下,我们在原始信号中得到的信息是有...

2018-06-23 10:32:04

阅读数:22

评论数:0

教你彻底学会动态规划——进阶篇

    在我的上一篇文章中已经详细讲解了动态规划的原理和如何使用动态规划解题。本篇文章,我将继续通过例子来让大家更加熟练地使用动态规划算法。 &...

2018-06-22 22:01:43

阅读数:2

评论数:0

教你彻底学会动态规划——入门篇

    动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有...

2018-06-22 22:00:53

阅读数:2

评论数:0

浅谈二叉查找树、AVL树、红黑树、B树、B+树的原理及应用

一、二叉查找树 1、简介 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: 任意节点左子树不为空,则左子树的值均小于根节点的值. 任意节点右子树不为空,则右子树的值均大于于根节点的值. 任意节点的左右子树也分别是二叉查找树. 没有键值相等的节点. 2...

2018-06-22 21:42:19

阅读数:8

评论数:0

B树和B+树

一、为什么要有B树?   学习任何一个东西我们都要知道为什么要有它,B树也一样,既然存储数据,我们为什么不用红黑树呢?   这个要从几个方面来说了: (1)计算机有一个局部性原理,就是说,当一个数据被用到时,其附近的数据也通常会马上被使用。 (2)所以当你用红黑树的时候,你一次只能得到...

2018-06-22 21:40:49

阅读数:4

评论数:0

红黑树(RB-Tree)

1、定义   红黑树是一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是red或black。红黑树满足以下五个性质: 1. 每个结点或是红色或是黑色; 2. 根结点是黑色; 3. 每个叶结点是黑的; 4. 如果一个结点是红的,则它的两个儿子均是黑色; 5. 每...

2018-06-22 21:39:04

阅读数:6

评论数:0

字典树(Trie)

1、定义   在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都...

2018-06-22 21:34:12

阅读数:7

评论数:0

ACM模板之二

0.头文件 #define _CRT_SBCURE_NO_DEPRECATE #include <set> #include <cmath&a...

2018-06-22 21:32:42

阅读数:12

评论数:0

ACM模板之一

ForeWord 六月六开始(话说,开始的日子真是个吉利的日子)到七月廿六,五十天整,终于将ACM在线模版整理完毕,想想还有点小激动呢~ 话说,我为什么执着于整理这个模板呢?既费时又费力,差不多,五十天都在忙这个。...

2018-06-22 21:31:45

阅读数:24

评论数:0

C语言小结-输入型参数和输出型参数

1、函数为什么需要传参和返回值 (1) 函数的作用就是处理数据,传入的参数就是被加工的数据,返回值就是输出的结果。 (2)函数名就是这个函数的入口,在内存中表示就是一个函数代码段的首地址,实质是一个指针常量,所以在...

2018-06-22 21:30:10

阅读数:13

评论数:0

经典算法总结

一、递归 1、基本思想   递归算法将一个不好解决的大问题转化为若干小问题,再把这些小问题进一步分解为更小的小问题,直至每个小问题可以直接解决为止。 【Note】: (1)递归体:使问题向边界条件转化的过程; (2)边界条件:程序终止的条件,也称为递归出口。 2、应用   示例:阶乘...

2018-06-21 20:59:24

阅读数:9

评论数:0

经典算法之动态规划(Dynamic Programming)

1、动态规划的定义   动态规划,dynamic Programming,是一种高效解决问题的方法,使用与具有重复子问题和最优子结构的问题。 2、动态规划的思想   动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优...

2018-06-21 20:40:45

阅读数:6

评论数:0

经典算法之分治(Divide)

1、分治的定义   分治即分而治之。分治算法就是把一个大的问题分为若干个子问题,然后在子问题继续向下分,一直到base cases,通过base cases的解决,一步步向上,最终解决最初的大问题。分治算法是递归的典型应用。 2、分治的思想 分治法的设计思想是: 1. 分–将问题分解为...

2018-06-21 20:14:04

阅读数:6

评论数:0

经典算法之回溯(BackTracking)

1、回溯的定义   回溯算法的定义:回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。一个典型的应用是走迷宫问题,当我们走一个迷宫时,如果无路可走了,那么我们就可以退一步,再在其他的路上尝试一步,如果还是无路可走,那么就再退一步,尝试新的路,直到走到终点或者退回到原点。 2、回溯的思想 ...

2018-06-18 16:59:55

阅读数:16

评论数:0

经典算法之贪心(Greedy)

1、贪心的定义   贪心算法是什么意思?举个例子就很清楚了:现在你有一个能装4斤苹果的袋子,苹果有两种,一种3斤一个,一种2斤一个,怎么装才能得到最多苹果?当然我们人考虑的话当然是拿两个2斤的苹果,就刚好装满了,但是如果按贪心算法拿的话,首先就要把最重的苹果拿下(是不是很符合贪心两个字?),但并...

2018-06-18 16:26:44

阅读数:17

评论数:0

经典算法之递归(Recursion)

1、递归的定义   递归:你打开面前这扇门,看到屋里面还有一扇门(这门可能跟前面打开的门一样大小(静),也可能门小了些(动)),你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开,。。。, 若干次之后,你打开面前一扇门,发现只有一间屋子,没有门了。 你开始原路返回,每...

2018-06-18 16:06:50

阅读数:15

评论数:0

双指针法及其应用

一、双指针法简介   所谓双指针,指的是在遍历对象的过程中,不是普通的使用单个指针(索引、游标、指针或可迭代对象皆可)进行访问,而是使用两个相同方向或者相反方向的指针进行扫描,从而达到相应的目的。   换言之,双指针法充分使用了数组有序这一特征,从而在某些情况下能够简化一些运算。 二、双指针...

2018-06-17 20:07:45

阅读数:6

评论数:0

cin与scanf cout与printf效率问题

  在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。难道C++真的低Pasc...

2018-06-17 17:02:15

阅读数:7

评论数:0

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