算法
文章平均质量分 59
吴威龙
停更一年了,这一年发生了很多事,后续有空再分享给大家
展开
-
Fleury 算法,求欧拉回路
基本概念:欧拉路:通过图中所有边的简单路欧拉回路: 闭合的欧拉路欧拉图: 包含欧拉回路的图简单的说:欧拉回路 就是经过图(有向图、无向图)的每条边一次且仅一次,回到出发点的路径就叫欧拉回路;Fleury算法基本思想:①.选择任意一个结点作为起点,选择一条从它开始的边,将其加到解的集合U中。②.从该边的终端,选择与之连通的下一条边作为新的起点,将已 经原创 2016-02-15 14:15:08 · 2030 阅读 · 0 评论 -
【算法总结系列-6】深度优先搜索-Depth First Search,DFS
题目:输入一个数N,输出1~N的全排列。本例子用 向 标有1、2、3、4...标号的箱子派发纸牌(1、2、3....)的方式来讲解深度优先搜索,等同于数学里面的全排列的知识理解深度优先搜索的关键是解决“当下该如何做”或“下一步如何做”。下面:#include using namespace std;int a[10],book[10],n; //book[]是标志性数组,原创 2016-06-03 13:14:32 · 779 阅读 · 0 评论 -
大数据与云计算笔记[一]:云计算相关概念
大数据与云计算名称解释原创 2016-09-20 19:13:37 · 1050 阅读 · 0 评论 -
【算法总结系列-5】链表与模拟链表
今天复习到了链表,下面说说链表吧一般而言,都是创建一个结构体用来表示链表的节点类型如:struct node{ int data; struct node *next;};原创 2016-05-23 21:24:25 · 350 阅读 · 0 评论 -
【算法总结系列-3】-- 简 单 队 列 --c++
说到基础的算法,队列是少不了的。队列:是一种特殊的线性结构,只允许在队列的首部(head)进行删除操作,这也叫“出队”。在尾部进行插入操作,这称为“入队”。当队列中没有元素时,称为空队列。这里借用《啊哈,算法》里面的一个例子来归纳下队列这个算法概念。A同学向B同学索问qq号,B同学给了A同学一串加密的数字,解译的规则如下:给定一串数字,首先将第一个数删除,紧接着将第二个原创 2016-05-21 09:39:37 · 1331 阅读 · 0 评论 -
【算法总结系列-2】有趣的排序-冒泡排序-C++演示
首先,冒泡排序的思想:每次比较两个相邻的元素,如果它们的顺序“错误”就把它们交换过来。这里指的错误就是左边的元素大于右边的元素代码示例:#include using namespace std;int main(){ int a[100],i,j,t,n; cin>>n;//输入一个数,表明有多少个待排序的数 for(i = 1;i <= n;i++)原创 2016-05-20 22:13:58 · 659 阅读 · 0 评论 -
【算法总结系列-1】快速排序-c语言实现
最近终于顿悟算法对编程的非凡意义,现计划写一系列的文章来总结下常用且比较重要的算法。现在第一个要小结的就是 快速排序#include int a[101],n;//定义全局变量,这两个变量需要在子函数中使用void quicksort(int left,int right) //快速排序算法{ int i,j,t,temp; if(left > rig原创 2016-05-20 21:47:20 · 3044 阅读 · 1 评论 -
汉诺塔问题
如图 所示,有 3 个圆柱 A、B、C。A 柱上有几个圆环(图示为 4 个),要求将它们全部移到 C 柱上。每次只能移动一个,可用 B柱作为过渡,但无论在哪个柱子上,小环都不能放在大环下面。 解:解题算法如下:① 若 A 柱上的圆环只有一个,即 n=1 时,可将它直接移动到 C 柱上。否则,执行后续步骤。② 用 C 柱作为过渡,将 A 柱上 n原创 2016-02-20 12:40:08 · 508 阅读 · 0 评论 -
AOV图-AOE图
一般用图来表示网络关系,当描述事务之间有纵横交错的关系时,可用结点表示事务、用边表示事务之间 的关系以及伴随这些关系的信息,从而形成一个描述事务之间网络关系的图,而问题的解决就相当于发现图中的路。 一、AOV-(Activity on Vertices)例题: 二、AOE-(Activity on Edge )例题:原创 2016-02-18 11:35:58 · 23355 阅读 · 2 评论 -
树 与 二叉树 的遍历
树也是图,遍历方法自然也分为广度优先和深度优先。但对于树,由于结点的排序有规则,所以其遍历结果产生唯一的结点序列,而不像 图 那样产生多种可能的结果。(1)广度优先遍历 自根部向下,依次访问完第一层的所有结点后,然后逐层访问各子树上同一层次的所有结点,以此类推,直至 最大深度上的结点都访问完毕为止。(层序遍历)(2)深度优先遍历 深度优先有分前序原创 2016-02-15 18:28:18 · 649 阅读 · 0 评论 -
图的遍历
遍历:就是从某个结点出发,按照特定的顺序依次访问其他结点。遍历的方法:广度优先遍历,深度优先遍历(1)广度优先遍历:① 从某个顶点开始,将其标识为 已访问过。② 然后逐个访问该顶点的邻接顶点中尚未遍历过的顶点,直到所有邻接顶点都被标识为已访问过为止。③ 然后对这些邻接结点逐个重复步骤②,直到所有顶点都没有可访问的邻接顶点为止,遍历结束就生成了一个广 度优先原创 2016-02-15 17:04:08 · 321 阅读 · 0 评论 -
生成树和最小费用生成树以及Kruskal算法
Spanning Tree --生成树 生成树是一种特殊通路,在实际应用中具有广泛意义。比如:将道路网表示一个图,则生成树就表示从某地出发,到达所有其他各地且不绕圈子的直达路径,就是不经过同一条边两次(导航软件涉及这类算法)。 不同的遍历方法,可以从图得到不同的生成树,从不同顶点出发,也得到不同的生成树。但是,一个连通图的生成树一定是原图的极小连通子图,这包含原图所有顶点和 n原创 2016-02-15 15:15:25 · 2241 阅读 · 0 评论 -
Hamilton-哈密顿回路
哈密顿回路图,与欧拉回路图正好互相呼应,欧拉回路要求通过每条边一次且仅仅一次,而哈密顿回路图则要求通过每个顶点一次且仅仅一次。 哈密顿回路图有一个重要的问题:traveling salesperson problem,TSP,就是所谓的 *货郎担* 的问题-->要求在图中发现经过所有顶点且总距离最短的路线。(这里说的距离是路径上所有边的权的总和。而不是路的长度) 据现在原创 2016-02-15 14:45:52 · 8995 阅读 · 0 评论 -
【算法总结系列-4】通过- 栈 -检验回文数
上一篇讲解了队列,队列的数据结构是先进先出。这篇主要讲 栈 。栈是一种先进后出的数据结构。举个形象的例子,手枪的弹夹,当装入子弹的时候,最后装入的那发子弹是第一个被打出去的子弹,而最先装入的那颗子弹就要等到最后才能打得出来。栈的实现:一个一维数组存储栈的内容,一个指向栈顶的变量top,通过top就可以对栈进行插入和删除由于本例是用回文数做例子,那么什么是回文数呢?回原创 2016-05-21 15:59:39 · 995 阅读 · 0 评论