
算法
文章平均质量分 58
jtahstu
ahstu
展开
-
康托展开/逆康托展开
康托展开 康托展开的公式是 X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,ai为当前未出现的元素中是排在第几个(从0开始)。 这个公式可能看着让人头大,最好举个例子来说明一下。例如,有一个数组 s = ["A", "B", "C", "D"],它的一个排列 s1 = ["D", "B", "A", "C"],现在要原创 2014-10-30 22:49:18 · 8690 阅读 · 0 评论 -
单源最短路径算法 - Dijkstra算法
# 单源最短路径算法 - Dijkstra算法标签(空格分隔): 算法介绍代码参考《啊哈算法》第六章第二节,PDF在线阅读介绍这是一个贪心算法,每次新扩展一个路程最短的点,更新与其相邻的点的路程。这个算法可以解决单源最短路径问题,这里是从第一个点开始到其他点的最短路径。不能有负权边,因为扩展到负权边的时候会产生更短的路程,有可能就破坏了已经更新的点路程不会改变的性质。时间复杂度 O(N^2),原创 2017-09-18 17:52:59 · 845 阅读 · 0 评论 -
最简单的最短路径算法 - Floyd_Warshall算法
# 最简单的最短路径算法 - Floyd_Warshall算法标签(空格分隔): 算法介绍代码参考《啊哈算法》第六章第一节,PDF在线阅读介绍详细介绍请看PDF,个人理解,这是一个暴力+动态规划的思想,在二维数组中每次都从第1,2,3 … N节点中转一次,如果可以中转且路径较小,那么我们就更新存储路径的二维数组。这个算法可以解决多源最短路径问题时间复杂度 O(N3)O(N^3)代码/** *原创 2017-09-18 17:52:31 · 1152 阅读 · 0 评论 -
无向图的深度和广度优先遍历 - C++
无向图的深度和广度优先遍历 - C++标签(空格分隔): 算法无向图的深度和广度优先遍历 - C需要解决的问题需要了解和学习的点代码本文来自《啊哈!算法》第5章第1节 点击下载PDF文件查看需要解决的问题一个无向图,怎么从深度和广度来遍历这个图,也就是怎么个走法需要了解和学习的点图的邻接矩阵存储法(就是一个二维数组)回溯 (这里要理解循环能给递归产生回溯的效果)图的生成树代码深度优先原创 2017-09-15 10:40:06 · 7290 阅读 · 1 评论 -
水池数目 - Ruby
水池数目标签(空格分隔): 算法水池数目出处NYOJ27题题目水池数目描述输入输出样例输入样例输出思路代码出处:NYOJ27题题目水池数目时间限制:3000 ms | 内存限制:65535 KB 难度:4描述南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机原创 2017-06-09 23:31:48 · 613 阅读 · 0 评论 -
次方求模 - Ruby
次方求模标签(空格分隔): 算法问题求a的b次方对c取余的值解题思路由公式:a^p mod m = (a mod m)^p mod m应用典型的就是南阳OJ102题原创 2017-06-09 04:09:04 · 735 阅读 · 0 评论 -
康托展开和逆康托展开 - Ruby
康托展开和逆康托展开标签(空格分隔): 算法康托展开和逆康托展开康托展开详述意义例子逆康托展开详述意义例子代码实现康托展开详述康托展开的公式是 X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,ai为当前未出现的元素中是排在第几个(从0开始)。意义康托展开表示的是当前排列在n个不同元素的全排列中的名次。比如21原创 2017-06-08 16:34:14 · 565 阅读 · 0 评论 -
链表
线性表的链式存储结构 -- 链表 单链表,除数据域外只设置一个指针域指向其后继节点双链表,除数据域外设置两个指针域,分别指向其前驱节点和后继节点在线性表的链式存储中,为了便于插入和删除算法的实现,每个链表带有一个头节点,并通过头节点的指针唯一标示该链表。手稿:// LinkList.cpp : 定义控制台应用程序的入口点。// 单链表 #include原创 2016-10-19 08:32:11 · 577 阅读 · 0 评论 -
迷宫求解 - C
迷宫求解标签(空格分隔): 算法迷宫求解需要解决的问题分析深搜广搜代码dfsbfs本文主要来源《啊哈!算法》第4章第2、3节需要解决的问题一个迷宫,由n行m列的单元格组成(0 < n,m <= 50),每个空格要么为障碍物,要么为空格,求一条从迷宫起点(1,1)到目标地点(小哈的位置)的最短路径。分析深搜规定一个搜索顺序(右下左上),一直走下去。如果没有到达,继续枚举四个方向搜索;如原创 2017-06-19 23:55:54 · 603 阅读 · 0 评论 -
欧几里德算法求最大公约数 - Ruby
欧几里德算法又称辗转相除法,用于计算两个整数m, n的最大公约数。其计算原理依赖于下面的定理:gcd(m, n) = gcd(n, m mod n)这个定理的意思是:整数m、n的最大公约数等于n和m除以n的余数的最大公约数。原创 2017-06-07 17:04:43 · 873 阅读 · 0 评论 -
筛法求素数 - Ruby
代码中介绍了两种写法,查阅资料时有看到其他的写法,这里主要关注思想,效率还有待优化,这两种写法效率都不怎样,是有更好的写法的,那就自行Google吧。原创 2017-06-07 17:03:16 · 654 阅读 · 0 评论 -
P65-将真分数分解为埃及分数
/* * 31.cpp * Created on: 2015年4月4日 * Author: jtahstu *///31将真分数分解为埃及分数//分子为1 的分数称为埃及分数,现输入一个真分数,请将该分数分解为埃及分数。//如:8/11=1/2+1/5+1/55+1/110。////*运行结果//1. Please enter a optional fraction (a/b)原创 2015-04-04 11:45:31 · 8851 阅读 · 0 评论 -
杨辉三角的多种解法
杨辉三角的多种解法杨辉三角的相信大家很熟悉吧,但是大家能用多少中方法写出来呀,一般人都只会想到两种,递归和二项式。当用递推时,有时在解题是根本没必要需要那么多呀,而只要杨辉三角的某一行,数据小时,我们可以用二项式来计算,但是数据比较大时,二项式算也是很麻烦的,那么还有其它的方法吗?所以下面我就介绍几种计算杨辉三角的方法吧。主要要记住第四种。。。。一:二维数组递推公式:f[1][原创 2015-01-03 18:19:25 · 10595 阅读 · 1 评论 -
Bellman_Ford算法 - 解决负权边
详情见本人的博客: http://www.jtahstu.com/blog/Bellman_Ford.html原创 2017-12-11 16:49:45 · 486 阅读 · 0 评论