SuanFa
文章平均质量分 60
云乐仙er
这个作者很懒,什么都没留下…
展开
-
生成随机数组函数
#ifndef SORTTESTHELPER_H#define SORTTESTHELPER_H#include<iostream>#include<ctime>#include<cassert>namespace SortTestHelper{ //生成有n个元素的随机数组,每个元素的随机范围为[rangeL,rangeR] in...原创 2018-08-21 10:36:47 · 1272 阅读 · 0 评论 -
广度优先搜索(BFS)模版
广度优先搜索一般由队列实现,且总是按层次的顺序进行遍历,其基本写法如下(可做模版用)void BFS(int s){ queue<int> q; q.push(s); while(!q.empty()){ 取出队首元素top; 访问队首元素top; 将队首元素出队; 将top的下一层结...原创 2019-03-11 18:39:30 · 808 阅读 · 0 评论 -
LCS(最长公共子序列)
LCS 最长公共子序列 LCS是Longest Common Subsequence的缩写,即最长公共子序列。一个序列,如果是两个或多个已知序列的子序列,且是所有子序列中最长的,则为最长公共子序列。 解决方法 对于一般的LCS问题,都属于NP问题。当数列的量为一定的时,都可以采用动态规划去解决。算法动态规划的一个计算最长公共子序列的方...原创 2018-10-14 19:15:57 · 195 阅读 · 0 评论 -
三边形面积(海伦公式及拓展)
三角形面积 海伦公式 海伦公式又译作希伦公式、海龙公式、希罗公式、海伦-秦九韶公式。它是利用三角形的三条边的边长直接求三角形面积的公式。 公式表述海伦公式: 假设在平面内,有一个三角形,边长分别为a、b、c,三角形的面积S可由以下公式求得:而公式里的p为半周长(周长的一半):注1:"Metrica"《度量论》手抄本中用s...原创 2018-10-13 20:24:15 · 1574 阅读 · 0 评论 -
康托展开和逆康托展开
康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。 原理介绍 康托展开运算其中, 为整数,并且 。 表示原数的第i位在当前未出现的元素中是排在第几个(难以理解原创 2018-10-13 16:20:07 · 160 阅读 · 0 评论 -
前缀、中缀、后缀表达式
关键字:概念, 前缀表达式, 前缀记法, 中缀表达式, 中缀记法, 波兰式, 后缀表达式, 后缀记法, 逆波兰式它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对于操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。举例:(3 + 4) × 5 - 6 就是中缀表达式- × + 3 4 5 6 前缀表达式3 4 +...原创 2018-10-12 21:24:50 · 8407 阅读 · 2 评论 -
筛法求素数
筛法求素数用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。筛法求素数 (ACM基础知识) 当只需要求某个数是不是素数的时候,我们可以直接通过素数的定义来求,即如果可以被除1及素数本身的其他数整除,则这个数不是素数但是如果要求某个范围内的素数的个数的时...原创 2018-10-11 19:41:17 · 723 阅读 · 0 评论 -
欧几里德算法求最大公约数
欧几里德算法定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。最大公约数(Greatest Common Divisor)缩写为GCD。gcd(a,b) = gcd(b,a mod b) (不妨设a>b 且r=a mod b ,r不为0) 程序设计辗转相除法是利用以下性质来确定两个正整数 a 和 b 的最大公因子的:⒈ 若 r 是 a ÷ b...原创 2018-10-11 19:37:22 · 1008 阅读 · 0 评论 -
排序算法模板
辅助排序测试用例的函数#include <iostream>#include <ctime>#include <cassert>using namespace std;namespace SortTestHelper { // 生成有n个元素的随机数组,每个元素的随机范围为[rangeL, ra...原创 2018-08-21 19:55:28 · 170 阅读 · 0 评论 -
二叉树存储结构中 *root==NULL 跟 root==NULL的区别
*root == NULL 跟 root == NULL的区别 左边概念意义的二叉树在使用二叉链表存储之后形成了箭头右边的图。 对每个结点,第一部分是数据域,数据域后面紧跟两个指针域,用以存放左子树根结点的地址和右子树根结点的地址。如果某棵子树是空树,那么显然也就不存在根结点,其地址就会是NULL,表示不存在这个结点。因此图中C的左子树、DEF的左子树和...原创 2019-03-11 20:30:59 · 2325 阅读 · 0 评论