随笔分类 - 数据结构
摘要:转自 :https://www.cnblogs.com/maples7/archive/2015/05/02/4472208.html 问题: 对于任意的非负整数,统计其二进制展开中数位1的总数。 解决: 相关Blog:http://www.cnblogs.com/maples7/p/4324844
阅读全文
摘要:给定一个数组,求出给定区间[l,r]中元素的最大值或最小值或者最值的索引。 一看到这个题目,简单,看我暴力出奇迹。暴力当然是可行的。但是时间复杂度很高(O(n^2))。线段树,树状数组也可以解决这个问题,复杂度(O(nlogn))的预处理,最终查询为O(次数*logn)。 而今天用ST(Sparse
阅读全文
摘要:题目链接:http://poj.org/problem?id=1988 题意:有n个元素,开始每个元素各自在一个栈中,有两种操作,将含有元素x的栈放在含有y的栈的顶端,合并为一个栈。 第二种操作是询问含有x元素下面有多少个元素。 思路: 并查集,把每一堆看作一个栈,堆的下方看作栈顶。因为当我们知道栈
阅读全文
摘要:题目链接:http://poj.org/problem?id=2524 学校有n个学生,但是你不能直接问学生的信仰,不然他会感到很不舒服的.一个方法是问m对同学,是否信仰同一宗教。根据这些数据, 计算学校最多有多少种宗教信仰的。 计算学校最多有多少种宗教信仰的。 思路:使用并查集,一开始假设大家都各
阅读全文
摘要:题目链接:http://poj.org/problem?id=1703 塔都市的警察局决定以混乱为目标,作为启动行动,扎根城市中的两个帮派,Gang Dragon和Gang Snake。 但是,警方首先需要确定犯罪分子属于哪个团伙。目前的问题是,两名罪犯; 他们属于同一个氏族吗? 您必须根据不完整的
阅读全文
摘要:在现实生活中,我们知道给出一些亲戚关系的信息,如A和B是亲戚,B和C也是亲戚,那么我们可以得出A和C也是亲戚。这是so easy 的的。我们看看下面的例子: 输入部分:给定N个人,M对数字,这些数字对表示某两个人是亲戚。接下来给定一个Q,表示Q对提问,求这些提问对中二者是否为亲戚 10 7 //N=
阅读全文
摘要:我们都知道,队列是一种FIFO的数据结构,规定在队尾增加元素,在队首删除元素,和食堂排队打饭一个道理。(当然,插队的人是很鄙视的)。而在优先队列中,每个元素却有了特权,被赋予了优先级,从而在访问元素时,优先级高的最先出队(如有特权的军人则可以率先购票,就是这个道理)。 对PQ的操作有Search,I
阅读全文
摘要:ASL(Average Search Length),即平均查找长度,在查找运算中,由于所费时间在关键字的比较上,所以把平均需要和待查找值比较的关键字次数称为平均查找长度。 它的定义是这样的: 其中n为查找表中元素个数,Pi为查找第i个元素的概率,通常假设每个元素查找概率相同,Pi=1/n,Ci是找
阅读全文
摘要:简介 BFS的过程是首先访问起始结点v,接着访问顶点v的所有未被访问的邻接结点,然后对每个继续进行上述步骤,直到所有结点都被访问过为止,当然,在访问过程中,需要使用一个队列,然后类似二叉树的层次遍历来访问。 BFS通俗的来讲,就如通病毒扩散一般蔓延。往往采用BFS求解迷宫问题的入口到出口的最短路径。
阅读全文
摘要:问题描述:一个带权有向图G与源点v,求从源点v到G中其他顶点的最短路径,并限定各边权值大于0 它的思想在于,对顶点集划分为两组,第一组为已经求出的最短路径的集合(S),期初只有一个顶点,此后每求出一个最短路径v,....u,将顶点u加入集合S中,知道全部顶点U加入到S中,第二组即为未确最短路径的顶点
阅读全文
摘要:简介 DFS的过程是一个递归过程,它是从图中的某个顶点开始,首先访问起始点v,然后选择一个与顶点v相邻的且没有被访问的顶点w,以w为起始顶点,在进行DFS,直到图中所有与v相邻的顶点都被访问过为止。 访问过程中,须记录所有元素是否被访问过,可用全局数组记录编号,初始为0,已经访问为1。 往往采用DF
阅读全文
摘要:我们知道了二叉树的递归遍历,在理解了递归的过程后,二叉树的遍历就觉得很简单。但是非递归的遍历帮我更好的理解栈的应用和二叉树的遍历。 ~~~~~先序遍历非递归算法 由先序遍历可知,遍历时先访问根结点,再遍历左子树,最后遍历右子树。根的指针域指向左右子树,因此访问左子树时不会丢失右子树的地址。所以,非递
阅读全文
摘要://函数:构造Huffman树HT[2*n-1] #define MAXVALUE 9999//假设权值不超过9999 #define MAXLEAF 30 #define MAXNODE MAXLEAF*2-1 using namespace std; #include //Using cin or cout #include //Using malloc and realloc #inc...
阅读全文
摘要:#include #include using namespace std; #define ElemType int #define MaxSize 100 #define M 8 #define N 8 int mg[M+2][N+2] = { {1,1,1,1,1,1,1,1,1,1},{1,0,0,1,0,0,0,1,0,1}, {1,0,0,1,0,0,0,1,0,1},{1,0,...
阅读全文

浙公网安备 33010602011771号