- 博客(8)
- 资源 (6)
- 收藏
- 关注
原创 并查集--leetcode200. 岛屿数量
什么是并查集有多个集合,集合内有多个元素 并查集算法用来查找一个元素所属的集合,合并两个元素各自所属的集合。称为并查集算法举例亲戚关系的等价问题,犯罪团伙的头目。 给出很多人的亲戚相互间关系,查找任意两人是否为亲戚。 多个犯罪分子各自在自己的团伙中,找到犯罪团伙的数量。算法思路使用树的数据结构来实现并查集算法。关键点: 1. 初始化集合,刚开始每个元素为一个集合,该元素就代表了该集合;如果有
2017-05-20 22:20:45 818
原创 负权边的最短路径--Bellman-Ford算法及其优化
算法思想核心思想:要求源点到其余顶点的最短路径,根据宽度优先搜索的经验一层一层扩展,这样来考虑,从源点开始经过其相邻的一条边(所有边走一遍)可以得到一个暂时的到各个顶点的最短路径,保存到distance数组中;然后考虑经过在之前的走过边基础上,再走一条边得到可以得到到各顶点的最短路径,就相当于经过两条边得到的最短路径,这里走第二条边时需要将每条边都走一遍才能确定下来走两条边得到的最短路径;最多可以走
2017-05-20 10:04:58 1631
原创 算法:理解单源最短路径——Dijkstra
单源最短路径指一个顶点到其余各个顶点的最短距离,算法思路分析下面以下图为例分析,算法的步骤。 根据上面的单向图,将其转化为邻接矩阵如下所示 dijkstra算法基于贪心思想,要求单源点的最短路径,从未走过的边中取一条最短的。 将设要求源点1 到其他顶点的最短路径,用一个数组dis[6]来保存到各个顶点的距离,初始化为dis[6]={0,1,12,1000,1000,1000}//1000表
2017-05-18 22:13:29 730
原创 算法:理解多源最短路径--floyd算法
算法作用floyd用于求单向图的任意两点之间的最短距离,即通过floyd算法计算之后,图的邻接矩阵中每个(I,j)点的权值是最小的。算法思路以下面的双向图为例,求每对顶点之间的最短路径。 得到其邻接矩阵,在不经过中间点时,顶点只能到达其邻接点,所以这个矩阵就是其每对顶点的最短路径。根据经验知道,两点之间的距离经过第三个点可能是会变短的,并且经过的中间点不同可能得到距离更短的点,因此,floyd
2017-05-17 22:52:53 1642
原创 图遍历--深度优先和广度优先
图的存储方式有两种:邻接矩阵和邻接表,这两种方式都可以用深度优先和广度优先的方式进行遍历。以下面的图为例说明遍历,其临街矩阵如作图所示。注意后面的代码中,顶点从0开始。 1. 深度优先深度优先基于递归的思想,假设开始从顶点1开始遍历,找到其第一个相邻的顶点2,一直往“深”处遍历,找顶点2的相邻顶点4,再找顶点4的相邻点,直到没有相邻点或者相邻点都被访问过进行回溯,同理对其他顶点进行遍历,直到所有顶
2017-05-17 21:11:09 732
原创 深度优先搜索DFS 走迷宫
要求: 1. 障碍物坐标处值为1,可走的为0. 2. 迷宫长宽小于50 3. 找到最短路径 4. 输出路径深度优先的关键点 1. 函数的形式参数 2. 递归结束条件 3. 下一步的坐标计算 4. 判断是否下一步可走 5. 已走过的路做标记 6. 回溯时将当前步标记清除分析: 1. 二维数组表示迷宫,参数需要当前坐标x,y,以及当前是第几步。 2. 结束条件为,找到目标。
2017-05-14 13:53:06 1569
原创 使用递归求全排列
全排列:如123三个数字的全排列:123,132,213,231,312,321;可以使用穷举的方式使用三个for循环来解决。但是如果数字很多或者数字的个数不确定那肯定不能用这种方法。以一个案例来说明。 假设手上有三封信123,三个信箱123,将三封信投递到三个信箱中正是一个全排列问题。信箱1 信箱2 信箱3 (信箱4)信1 信2 信3 假设是以上投法,当信全部投完,需要从信箱
2017-05-14 00:06:58 1192
原创 Linux的启动和关机的流程、引导加载程序
本文为鸟哥中18章笔记18.1 启动流程不能随意关机,多用户的操作系统,关机导致其他在线用户数据丢失后台任务的数据丢失,硬盘损坏启动过程加载bios,获取第一个启动设备的代号读取第一个启动设备的MBR的引导程序grub或lilo的启动信息加载操作系统核心,解压缩、尝试驱动所有硬件设备核心执行init程序并获取运行信息init执行/etc/
2017-05-07 22:25:56 1538
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人