heap不属于STL容器,它扮演者priority queue的助手。heap是一种完全二叉树,可由数组来实现,但heap需要动态改变大小,所以最终选择了vector作为底层容器。STL默认提供最大堆。
题外话:分析heap的源码就能清楚的理解堆这种数据结构的例程,而STL库代码的质量又很高,所以看堆的代码,STL源码是一个很好的选择。
为了满足完全二叉树的性质,新插入的元素一...
分类:
其他好文 时间:
2014-07-22 23:04:53
阅读次数:
363
1
什么是递归:实现某些功能不用递归可能要几十行代码,用递归可能几行就搞定了,而且代码清晰简洁。一直以为递归也就是自己调用自己,有一个出口条件,让他停止递归,退出函数,其实的特点并非就这些。递归还有一个非常重要的特点:先进后出,跟栈类似,先递进去的后递出来。由于递归一直在自己调用自己,有时候我们很难...
分类:
其他好文 时间:
2014-05-01 22:32:03
阅读次数:
570
1 #include 2 #include 3 #include 4 #define
INIT_STACK_SIZE 100 5 typedef struct 6 { 7 char * chOperator; 8 int dwtop; 9
}OPND;10 11 void I...
分类:
其他好文 时间:
2014-05-01 20:37:37
阅读次数:
373
1 #include 2 #include 3 #include 4 #define
INIT_STACK_SIZE 100 5 typedef struct 6 { 7 char * chOperator; 8 int dwtop; 9
}OPND;10 11 void I...
分类:
其他好文 时间:
2014-05-01 20:32:11
阅读次数:
366
递归:就是出现这种情况的代码: (或者说是用到了栈)解答树角度:在dfs遍历一棵解答树
优点:结构简洁缺点:效率低,可能栈溢出递归的一般结构:1 void f() {2 if(符合边界条件) {3 ///////4 return;5 }6 7
...
分类:
其他好文 时间:
2014-05-01 19:20:17
阅读次数:
343
zb的生日时间限制:3000ms |
内存限制:65535KB难度:2描述今天是阴历七月初五,acm队员zb的生日。zb正在和C小加、never在武汉集训。他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和never都很喜欢吃西瓜,而且一吃就是一堆的那种,zb立刻下定决心买了一堆西瓜。当他...
分类:
其他好文 时间:
2014-05-01 18:52:01
阅读次数:
290
各位勇敢者要玩的第一个游戏是什么呢?很简单,它是这样定义的:
1、 本游戏是一个二人游戏;
2、 有一堆石子一共有n个;
3、 两人轮流进行;
4、 每走一步可以取走1…m个石子;
5、 最先取光石子的一方为胜;
如果游戏的双方使用的都是最优策略,请输出哪个人能赢。...
分类:
其他好文 时间:
2014-04-30 22:44:39
阅读次数:
282
树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。
二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个结点;...
分类:
其他好文 时间:
2014-04-30 22:44:38
阅读次数:
501
前序:
(二叉)堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。树中每个节点与数组中存放该节点值的那个元素对应。
树的每一层都是填满的,最后一层除外。
树的根为a[1] (在这里是从1开始的,也可以从0开始),给定了某个节点的下标i,其父节点为i/2,左二子为2*i,右儿子为2*i+1。
二叉堆满足二个特性:
1.父结点的键值总是大于或等于(小于或等于)任何一个...
分类:
其他好文 时间:
2014-04-30 22:15:38
阅读次数:
434