- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 Huffman树与Huffman编码
一.哈夫曼树概念 路径:祖先到节点之间的分支构成一条通往节点的路径;路径长度:路径上分支的数目称为路径长度;节点的权:给树中节点所设的物理意义的值;节点带权路径长度:从根到该点路径长度与该点权值的乘机;Huffman树就是所有树中每点带权路径加和最短的树。 二.Huffman树构造步骤 1.根据每个点的权值建立n个仅有一个节点构成的树。 2.寻找这一些树中带权路径长度加和最短的两棵树,进行
2016-11-24 23:31:38 691
原创 线索二叉树
一.线索二叉树 我们在遍历二叉树时会得到一个线性序列,而在一些应用中我们需要频繁的得到某个元素的前驱或后继,而每次均遍历一遍时间消耗过大,因此提出了线索二叉树的概念,用于在树中储存一条链用以记录这条线性序列,使得我们可以高效的调用某些元素的前驱或后继。 二.实现方法 线索二叉树建立: 一般想法是在二叉树结构中加入两个指针域分别指向前驱后继,但是这样会使结构体的存储密度大大降低,
2016-11-23 22:48:59 494
原创 二叉树建立及其基本操作
二叉树的建立 方法一:按完全二叉树的层次顺序,依次输入结点信息建立二叉链表。 基本思想:一般的二叉树添加虚结点成为完全二叉树;依次输入结点信息,每进入一个字符建立一个节点, 无论是否为虚拟节点,虚拟节点下可以继续接入虚拟节点。 若是第一个结点,则令其为根结点,否则将新结点插入到它的双亲结点上。 用队列来实现这种先入先操作的数据结构,这里我就数组实现队列了。 如此重复,直到输入结束符号“
2016-11-13 18:11:02 855
原创 顺序表实现栈的基本操作
顺序表是一种存储格式与链表处于同一层次,可以用来实现一些结构,比如栈等。 一.顺序表 1.顺序表的类型定义(静态) #define LIST_MAX_SIZE 100 //空间初始大小 typedef int ElemType; //元素的数据类型 typedef struct { ElemType elem[ LIST_MAX_SIZE ]; // 存储数组
2016-11-12 21:57:09 791
原创 简单八数码问题深搜实现
2 8 3 1 2 3 编写程序输出由 1 0 4 变为 8 0 4 的最短路径 7 6 5 7 6 5 一.简单深搜寻找最短步骤: /* 一般用广搜寻着最短路径,因为他是按照层次来的(设置一个visit记录访问过的点), 只要找到最先到达目标的就行。 如果用深搜着最短路径,你就需要找一个最深搜到哪
2016-11-12 10:52:43 1211
原创 linux ubuntu 16.04 flash插件安装
一.打开火狐浏览器任意搜索视频点击页面显示的flash插件升级 二.下载符合自己linux的flash插件,我这里下载的是: tar-zx -f install_flash_player_11_linux.x86_64.tar.gz 三.OK,插件下载完毕,解压将libflashplayer.so文件提取出保存在Downloads(保存到哪里都可以,方便即可)下准备使用。
2016-11-05 09:44:28 1225 1
原创 poj1753Flip Game
/*poj1753:枚举+DFS用一个计数实现数组元素在深搜时起点的变化 较为常规*/ 题意:进行若干次变化,每次可把临近的四个变换颜色,最终能使得正面颜色都相同,输出最少的次数 #include #include #include using namespace std; int nx[5] = {0, 0, -1, 1}; int ny[5] = {-1, 1, 0, 0}; int
2016-10-24 19:58:26 271
原创 交换排序(快速排序 冒泡排序)
1.快速排序:先从数列中取出一个数作为基准数;分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边;再对左右区间重复第二步,直到各区间只有一个数。 以一个数组作为示例,取区间第一个数为基准数。 0 1 2 3 4 5 6 7 8 9 72
2016-10-19 20:48:54 271
原创 插入排序(普通插入 希尔排序)
一.插入排序 直接插入排序:如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。 时间复杂度:O(n^2) /*插入排序算法*/ #include using namespace std; const int MAXN = 100; void Print(int
2016-10-19 19:55:19 347
原创 深搜DFS
深度优先搜索: •是沿着树的深度遍历树的节点,尽可能深地搜索树的分支,当某一节点的所有边已被探寻过,搜索将回溯到发现该节点的那条起始边节点。 •这一过程将进行到已发现从源点可到达的所有节点为止。 •如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。 •属于盲目搜索。 简单一点说就是找到一个未被记录的点,从它往下遍历一遍把所有和它有
2016-09-21 16:56:46 505 2
原创 广搜BFS prime path+广搜总结
Prime Path 题意:给定两个素数n和m,要求把n变成m,每次变换时只能变一个数字,即变换后的数与变换前的数只有一个数字不同,并且要保证变换后的四位数也是素数。求最小的变换次数;如果不能完成变换,输出Impossible。 1.解决这个问题前必须要先介绍一种素数打表方法如下: 素数打表(筛选法) 筛选打素数表是一种高效的打表方法,具体做法是:先把N个自然数按次序排列起来。1不
2016-09-12 10:59:47 586 1
原创 搜索 BFS
广搜:就是先往“广”的地方找,在一层一层的推下去,换句话手就是先把同层的找完再往下层去找,是一种扩散的思想。每个深度为为t的节点一定会在深度为t+1的节点前找到。主要用队列来实现(如果你不明白什么是队列,不用着急,因为依旧可以实现广搜)。下面介绍一下两道最基础的广搜题。 勘探油田(结构体实现) Description 某石油勘探公司正在按计划勘探地下油田资源。他们工作在一片长方形的地
2016-09-08 16:22:32 482 1
转载 搜索——图的储存
搜索:搜索算法是利用计算机的高性能来有目的地穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。 搜索过程实际上是根据初始条件和扩展规则构造一棵 解答树并寻找符合目标状态的节点的过程。 一.主要用图的思想实现搜索 二.图的储存 1.邻接矩阵:用矩阵实现(空间开销大,不能存重边) /*邻接矩阵储存图*/ #include #include #
2016-08-31 15:33:42 315 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人