- 博客(11)
- 收藏
- 关注
原创 《啊哈!算法》之并查集
并查集通过一个一维数组来实现,其本质是维护一个森林。刚开始的时候,森林的每个点都是孤立的,每个人都是自己的王,也可以理解为每个点就是一颗只有一个结点的树,之后通过一些条件,逐渐将这些树合并成一棵大树。其实合并的过程就是一个“认爹的过程”。在这个过程中,要遵守“靠左”原则和”擒贼先擒王“原则(这里靠左或者靠右都并无大碍,但一旦选择一个原则,便要一直遵循)在每次判断两个结点是否以及在同一棵树上...
2018-09-16 22:30:51
964
原创 vector容器(C++)
vector容器vector容器概述vector类模板常用成员函数模板 构造函数模板增加函数模板删除函数模板遍历函数模板vector容器概述 vector类模板称作向量类模板,实现了动态的数组,用于元素个数动态变化的对象数组 与数组不同的是数组的元素个数会随着vector对象元素个数的增大合缩小自动变化。vector类模板常用成员函数模板...
2018-08-26 16:27:42
206
原创 《啊哈!算法》之最短路径(Dijkstra算法和bellman-ford算法及其队列优化)
最短路径DijkstraBellman-FordDijkstra该算法的基本思想为: 每次找到离源点最近的一个顶点,然后以该顶点为中心进行扩展最终得到源点到其余所有点的最短路径。基本步骤如下:将所有顶点分为两部分:已知最短路程的顶点集合P和未知最短路程的顶点集合Q。用book[i]表示,如果book[i]=1则表示这个顶点在集合P中,反之顶点在集合Q中。设置源点...
2018-08-22 14:03:20
1957
1
原创 《啊哈!算法》之图的遍历——深度广度优先算法
《啊哈!算法》之图的遍历——深度广度优先算法什么是图深度优先遍历广度优先遍历什么是图 简单地说,图就是由一些小圆点(称为顶点)和连接这些小圆点的直线(称为边)组成的 这些箭头代表着只能单向访问,比如只能A→B,不能B→A,为有向图,反之为无向图 数字代表着访问顺序了解了什么是图过后那么我们怎么用程序把图表示出来 最常用的方法是用一个二维数组e...
2018-08-20 18:38:56
1134
原创 《啊哈!算法》之种子填充法(宝岛探险)——广度优先搜索(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
718
原创 《啊哈!算法》之解救小哈——深度优先算法(C++)
《啊哈!算法之解救小哈》 我们需要用dfs()函数处理的问题是:先检查小哼是否已经到达小哈的位置,如果没有到达则找出下一步可以走的地方判断是否已经到达小哈的位置 if((x == endx) && (y == endy)) { if(step < minute) minute = step; ...
2018-08-19 14:20:52
1587
1
原创 (《啊哈!算法》)小猫钓鱼的C++改写(队列、栈的应用)
(改编于《啊哈!算法》(啊哈磊))“小猫钓鱼”游戏规则: 将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手上的第一张扑克牌放在桌子上,然后小哈也拿出手上的第一张扑克牌,放在小哼刚打出的牌上面,就这样两人交替出牌。出牌时,如果某人打出的牌与桌上的牌的牌面相同,即可将两张相同的牌及其中间所加的牌全部取走,并依次放到自己手中牌的末尾,当任意一人手中的牌全部出完时,游戏结束,对手获胜。先定义...
2018-08-17 18:34:51
1209
原创 C++三种继承访问方式总结
总结:派生类对于基类的继承方式1、公有继承 派生类对象则只可访问基类的公有成员和保护成员。 基类的私有成员,无论派生类成员函数还是派生类对象都无法访问。2、私有继承 基类所有的非私有成员变成派生类的私有成员。 基类的私有成员,只能由基类的成员含糊 。3、保护继承 基类的非私有成员,在派生类中都变成保护成员,可以被派生类的成员函数访问,但不能被派生类对象访问(不能在类外访问)。...
2018-08-10 14:44:19
225
原创 C++ 异常处理入门
C++异常处理入门异常处理概念异常处理基本结构及过程注意异常处理概念异常分类 C++的异常有两种:语法错误;运行时错误。这次我们主要说一说运行时发生的异常。基本思想 C++异常处理机制的基本思想是将异常的检测和处理分开。异常处理基本结构及过程C++异常处理的基本结构try、throw、catch语句的一般语法结构:throw<表达式>...
2018-08-10 14:39:44
151
原创 C++输入、写入、显示学生数据到文件中
#include<iostream>#include<string>#include<fstream>using namespace std;struct Student{ int num; string name; double score;};int main(){ int i; Student stu...
2018-08-09 15:26:40
1795
原创 C++输入输出
输入输出I/O库常用的流类标准输出流对象文件操作与文件流I/O库常用的流类ios: 抽象基类,由ios派生出类istream和类ostream istream: 通用输入流类,输入操作 ostream: 通用输出流类iostream: 通用输入输出流类,由以上两类派生ifstream: 输入文件流类,由istream派生ofstream: 输出文件流类,由ost...
2018-08-09 14:21:50
278
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人