![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
疯狂的指针
东南大学计算机科学与工程学院硕士
展开
-
算法:母函数在算法中的运用
最近在刷杭电OJ的时候,接触到了母函数理论,发现该理论应用比较多,而且对于新手比较难以理解,故决定写一篇通俗易懂的文章,本文章是在理解别人文章的基础上,再加上自己的理解,所以难免有很多地方重复,在结尾我会给出引用文章。在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方原创 2016-06-07 15:47:57 · 565 阅读 · 0 评论 -
Dijkstra算法,Bellman-Ford算法和BFS算法解决有向图的单源最短路径问题
最短路径问题是一个很常见的问题,与其相关的算法也很多,本文总结了三种不同的算法来解决这个问题,并进行了一些对比分析。本文不像教科书那样详细介绍每种算法的具体细节,可以阅读这篇文章:http://dsqiu.iteye.com/blog/1689163,里面讲的和详细。一.Dijkstra算法相信说到单源最短路径问题,大家都会想到著名的Dijkstra算法。Dijkstra算法本质上是一种贪原创 2016-08-26 22:57:31 · 4705 阅读 · 0 评论 -
网易2017年秋招编程题之暗黑的字符串解析
题目:一个只包含'A'、'B'和'C'的字符串,如果存在某一段长度为3的连续子串中恰好'A'、'B'和'C'各有一个,那么这个字符串就是纯净的,否则这个字符串就是暗黑的。例如:BAACAACCBAAA 连续子串"CBA"中包含了'A','B','C'各一个,所以是纯净的字符串AABBCCAABB 不存在一个长度为3的连续子串包含'A','B','C',所以是暗黑的字符串你的任务就是原创 2016-09-15 23:30:03 · 3656 阅读 · 0 评论 -
2016年9月11日美团笔试编程题之收红包问题解析
声明:本文章的解题技巧属于原创。**************************************************************************************************************************************************************************************原创 2016-09-11 21:55:22 · 3246 阅读 · 1 评论 -
地下城夺宝游戏——杭电OJ 1044题解析
题目来源:杭电OJ-1044题目大意:一个探险家身处一个危险的地下城,城中很危险,并且城中分散着若干个珠宝;现在地下城即将塌陷,冒险家需要在有限的时间内逃出去,但他希望在逃生的过程中获取一些珠宝并使价值最大化。题目要求用程序计算出最优方案所能获取的珠宝价值。以前也遇到过相似的题目,但一直未真正搞明白,最近再次遇到,阅读了一些大牛的博客,结合自己的理解,将这个知识点记录一下。这道原创 2016-07-27 16:31:20 · 914 阅读 · 0 评论 -
最小生成树之Kruskal和Prim算法——C++实现
很久以前就学过最小生成树之Kruskal和Prim算法,这两个算法很容易理解,但实现起来并不那么容易。最近学习了并查集算法,得知并查集可以用于实现上述两个算法后,我自己动手实现了最小生成树算法。宏观上讲,Kruskal算法就是一个合并的过程,而Prim算法是一个吞并的过程,另外在Prim算法中还用到了一种数据结构——优先级队列,用于动态排序。由于这两个算法很容易理解,在此不再赘述。接下来给出我原创 2016-06-18 17:16:32 · 14142 阅读 · 4 评论 -
《hihoCoder太阁最新面经算法竞赛4》题目解析【含源代码】
题目1 : 树结构判定描述给定一个包含 N 个顶点 M 条边的无向图 G ,判断 G 是不是一棵树。输入第一个是一个整数 T ,代表测试数据的组数。 (1 ≤ T ≤ 10)每组测试数据第一行包含两个整数 N 和 M 。(2 ≤ N ≤ 500, 1 ≤ M ≤ 100000)以下 M 行每行包含两个整数 a 和 b ,表示顶点 a 和顶点 b 之间有一原创 2016-06-14 20:10:57 · 2285 阅读 · 0 评论 -
数位DP 浅谈(hihocoder 1033:交错和)
数位DP是一种比较特殊的DP方法,之所以了解到是为了尝试解决hihocoder上一道交错和的题目,更详细的信息请参考:文章《浅谈数位类统计问题》和讲义《初探数位DP》事实上在ACM中,我们经常遇到如下类问题:求整数区间[L,R]中满足条件Q的整数的个数(或它们的和、积等)对于这类问题,乍一看是数论问题,但是却发现条件Q一般不是那么明显,找不到简单的规律;尝试逐个枚举,显然时间超出。转载 2016-06-16 11:37:51 · 457 阅读 · 0 评论 -
拓扑排序——用C++中STL实现
最近学习了拓扑排序,发现网上很多人对它的实现比较复杂,无论是在编程比赛,还是在实际开发中都比较耗费时间,所以用C++中STL实现该算法的好处就不言而喻!首先简单介绍一下拓扑排序算法:拓扑排序算法主要是循环执行以下两步,直到不存在入度为0的顶点为止。 (1) 选择一个入度为0的顶点并输出之; (2) 从网中删除此顶点及所有出边。循环结束后,若输出的顶点数小于网中的顶点原创 2016-06-15 11:35:28 · 9878 阅读 · 11 评论 -
算法:康托展开式——实现全排列序列与序号的映射
康托展开式实现了由1到n组成的全排列序列到其编号之间的一种映射,下面会给出例子,虽然这个公式应用不是很多,但这种思想值得学习,首先给出其公式:X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0!一.公式的说明由1到n这n个数组成的全排列,共n!个,按每个全排列组成的数从小到大进行排列,并对每个序列进行编号(从0开始),并原创 2016-06-07 10:23:49 · 3963 阅读 · 3 评论 -
迷宫的最短路径之BFS算法
给定一个大小为N*M的迷宫,由通道('.')和墙壁('#')组成,其中通道S表示起点,通道G表示终点,每一步移动可以达到上下左右中不是墙壁的位置。试求出起点到终点的最小步数。(本题假定迷宫是有解的)(N,M样例输入:10 10样例输出:22这道题目以及解法均来自《挑战程序设计竞赛(第2版)》第34页-36页;个人觉得这个例题很好地表现了广度优先搜索是如何与队列先转载 2016-06-28 10:19:35 · 27877 阅读 · 1 评论 -
求图中最短路径算法之Dijkstra算法——C++实现并优化
Dijkstra算法是一种比较经典的求图中最短路径算法,它是一种贪心算法,可以求出从源节点到图中其他所有节点的最短路径。适用范围:用于求有向或无向加权图中两点间的最短路径,其中边的权值不能为负。最近重新学习了该算法,并用C++将其实现,同时对代码进行了优化,优化思路如下:一般的Dijkstra算法实现代码,在每次将节点添加到S集合之前,都要在所有节点中进行搜索,找出代价最小的节点进行添加。原创 2016-06-25 17:11:45 · 12088 阅读 · 3 评论 -
《背包九讲》带你玩转背包问题!
最近在学习DP,涉及到背包问题,有幸接触到《背包九讲》这篇神一样的文章,感觉收获很大!果断收藏!******************************************************************************************************************************************************转载 2016-08-22 17:59:48 · 639 阅读 · 0 评论