
数据结构与算法
道道道人间道
这个作者很懒,什么都没留下…
展开
-
图---最小生成树---普里姆算法
普里姆算法简介:设集合U为最小生成树的顶点集合,开始时只有一个结点,这个结点是我们任意指定的,就从这个结点开始,以此向该结合中添加其余剩下的结点。其规则如下:(设集合V包含图中所有的顶点)1、找最小权值的边:该边的两个顶点分别属于集合U和集合V-U (此时该边就是最小生成树的边)2、将该边的属于集合V-U的顶点并入集合U,从V-U集合中删除 (第 1 、2 步可以原创 2014-03-10 23:13:26 · 1293 阅读 · 0 评论 -
c++中sort()及qsort()的用法总结
当并算法详解请见点我想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~所以自己总结了一下,首先看sort函数见下表: 函数名 功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 partial_sort 对给定区间所有元素部分排序转载 2014-03-12 21:36:48 · 652 阅读 · 0 评论 -
8皇后问题------回溯法
为了简化,先对4皇后问题进行讨论,对与4皇后问题,先定义一个4x4的棋盘(矩阵),按照下面规则将4个棋子(皇后)放到棋盘上。规定:1、任何两个棋子不同行2、任何两个棋子不同列3、任何两个棋子不在用一对角线上先引入一副图来说明:(该图为教材上的)对与此问题,刚开始的时候棋盘为空,回溯法的思想是:从该树形结构图的根节点开始,进行先序遍历,到叶子结原创 2014-03-13 18:18:56 · 979 阅读 · 0 评论 -
两个数的最大公约数------欧几里德算法(辗转相除法)
计算原理依赖于下面的定理:定理:gcd(a,b) = gcd(b,a mod b) (a>b 且a mod b 不为0)算法步骤:1:r = mod(a,b)2:a = b;3:b = r;4:如果b不为0,则返回步骤1继续执行,否则算法结束,a就是所求的最大公约数完整代码如下:#includeusing namespace std;int Gcd(i原创 2014-03-13 22:53:13 · 964 阅读 · 0 评论 -
处理大整数------计算n!(阶层)
我们知道,计算n!的方法通常有两种,一种是利用循环进行迭代,而另外一种就是利用函数进行递归运算,在一般情况是是可行的,但是当n比较大的时候,就不能通过这样直接迭代了,因为在我们使用的计算机语言中,对整数类型,一般为 int、long。稍微大点的就是 long long 了,尽管使用语言提供的最大整形,也不能直接处理n比较大的情况,如:n为100时,更何况是1000、或则更大。利用循环直接进行迭原创 2014-03-18 10:40:32 · 2576 阅读 · 0 评论 -
常用算法技巧及常识
暂无原创 2014-03-17 15:08:38 · 837 阅读 · 0 评论 -
链表操作————合并两个链表,并同时删除两链表中的公共元素结点
先看来普通的合并,没有原创 2014-08-02 23:45:50 · 990 阅读 · 0 评论 -
A*算法步骤
步骤如下:先设定两个集合,open集,close集1、将起始点加入open集(设置父亲节点为空)2、在open集中选着一个F值最小的节点作为当前节点2.1 将其添加到close集,并从open集中移除!2.2 如果为终点节点,那么结束搜索2.3 处理当前节点的所有邻接节点如果不在open集中,那么就将其添加到open集,(最好设置该节点的父节点为当前节点,以便确定路原创 2014-11-27 21:45:27 · 6380 阅读 · 0 评论