Algorithms
扫描二维码领红包
这个作者很懒,什么都没留下…
展开
-
《啊哈!算法》之最短路径(Dijkstra算法和bellman-ford算法及其队列优化)
最短路径DijkstraBellman-FordDijkstra该算法的基本思想为: 每次找到离源点最近的一个顶点,然后以该顶点为中心进行扩展最终得到源点到其余所有点的最短路径。基本步骤如下:将所有顶点分为两部分:已知最短路程的顶点集合P和未知最短路程的顶点集合Q。用book[i]表示,如果book[i]=1则表示这个顶点在集合P中,反之顶点在集合Q中。设置源点...原创 2018-08-22 14:03:20 · 1936 阅读 · 1 评论 -
《啊哈!算法》之图的遍历——深度广度优先算法
《啊哈!算法》之图的遍历——深度广度优先算法什么是图深度优先遍历广度优先遍历什么是图 简单地说,图就是由一些小圆点(称为顶点)和连接这些小圆点的直线(称为边)组成的 这些箭头代表着只能单向访问,比如只能A→B,不能B→A,为有向图,反之为无向图 数字代表着访问顺序了解了什么是图过后那么我们怎么用程序把图表示出来 最常用的方法是用一个二维数组e...原创 2018-08-20 18:38:56 · 1111 阅读 · 0 评论 -
《啊哈!算法》之种子填充法(宝岛探险)——广度优先搜索(C++)
岛屿标记统计游戏某个岛屿由它的主岛和其附属岛屿构成,我们需要统计其主岛和附属岛的数量,以及该岛的面积 数字1-9均表示陆地,数字0表示海洋 已知这是xxx岛的航拍图: 1 1 0 0 2 2 0 0 0 0 2 3 0 0 4 4 首先简单了解广度优先算法: 通过一层一层扩展的方法来实现目的,扩展时每发现一个点就将这个点加入到队列中,直至实现目的位置。代码为:...原创 2018-08-19 16:57:48 · 702 阅读 · 0 评论 -
《啊哈!算法》之解救小哈——深度优先算法(C++)
《啊哈!算法之解救小哈》 我们需要用dfs()函数处理的问题是:先检查小哼是否已经到达小哈的位置,如果没有到达则找出下一步可以走的地方判断是否已经到达小哈的位置 if((x == endx) && (y == endy)) { if(step < minute) minute = step; ...原创 2018-08-19 14:20:52 · 1560 阅读 · 1 评论 -
(《啊哈!算法》)小猫钓鱼的C++改写(队列、栈的应用)
(改编于《啊哈!算法》(啊哈磊))“小猫钓鱼”游戏规则: 将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手上的第一张扑克牌放在桌子上,然后小哈也拿出手上的第一张扑克牌,放在小哼刚打出的牌上面,就这样两人交替出牌。出牌时,如果某人打出的牌与桌上的牌的牌面相同,即可将两张相同的牌及其中间所加的牌全部取走,并依次放到自己手中牌的末尾,当任意一人手中的牌全部出完时,游戏结束,对手获胜。先定义...原创 2018-08-17 18:34:51 · 1172 阅读 · 0 评论 -
《啊哈!算法》之并查集
并查集通过一个一维数组来实现,其本质是维护一个森林。刚开始的时候,森林的每个点都是孤立的,每个人都是自己的王,也可以理解为每个点就是一颗只有一个结点的树,之后通过一些条件,逐渐将这些树合并成一棵大树。其实合并的过程就是一个“认爹的过程”。在这个过程中,要遵守“靠左”原则和”擒贼先擒王“原则(这里靠左或者靠右都并无大碍,但一旦选择一个原则,便要一直遵循)在每次判断两个结点是否以及在同一棵树上...原创 2018-09-16 22:30:51 · 948 阅读 · 0 评论