DFS求岛的个数LeetCode 200. Number of Islands
2016-04-15 00:00
453 查看
深度优先搜索算法(Depth-First-Search),是搜索算法的一种。它沿着树的深度遍历树的节点,尽可能深的搜索树的分 支。当节点v 的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。DFS属于盲目搜索。
算法步骤:
1. 访问顶点v;
2. 依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;
3. 若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止
200. Number of Islands
Descriptor:Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water
给出一个2维矩阵, 其中'1'代表陆地, '0'代表水, 求岛(由连接在一起的陆地组成)的个数
算法步骤:
1. 访问顶点v;
2. 依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;
3. 若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止
200. Number of Islands
Descriptor:Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water
给出一个2维矩阵, 其中'1'代表陆地, '0'代表水, 求岛(由连接在一起的陆地组成)的个数
public int numIslands(char[][] grid) { // 设置岛的个数初值为0 int answer = 0; // 遍历这个2维矩阵, 对于每一个点为'1'(陆地), 进行深度优先搜索 for (int i = 0; i < grid.length; ++i) { for (int j = 0; j < grid[i].length; ++j) { if (grid[i][j] == '1') { DFS(grid, i, j); ++answer;// 搜索完成, 岛的个数加1; } } } return answer; } public void DFS(char[][] grid, int x, int y) { // 判断是否越界, 并判断当前元素是否满足搜索条件 if (x < 0 || x >= grid.length || y < 0 || y >= grid[x].length || grid[x][y] != '1') return;// 不满足条件的点, 直接返回 // 当前点已经搜索,设为'0', 避免重复搜索导致死循环 grid[x][y] = '0'; // 对上方点做递归深度优先搜索 DFS(grid, x - 1, y); // 对下方点做递归深度优先搜索 DFS(grid, x + 1, y); // 对左边方点做递归深度优先搜索 DFS(grid, x, y - 1); // 对右边方点做递归深度优先搜索 DFS(grid, x, y + 1); }
相关文章推荐
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- win2003分布式文件系统(dfs)配置方法[图文详解]
- win2003分布式文件系统及其部署 图文教程
- Hadoop2.6+jdk8的安装部署(1)——使用jar包安装部署【详细】
- Hadoop FS Shell
- DFS使用方法总结
- FastDFS注意事项
- 无忧技术带您预览DFS(分布式文件系统)管理控制台
- C 语言实现迷宫 DFS算法
- 一幅图弄清DFT与DTFT,DFS的关系
- HDFS---Namenode
- HDFS ---- Services startup
- POJ1523 SPF dfs
- poj1731 Orders dfs
- Surrounded Regions
- Binary Tree Zigzag Level Order Traversal,Restore IP Addresses,Word Search,Simplify Path
- DFS基础(1)
- HDU1241 Oil Deposits
- DFS算法有趣小题目
- Microsoft Windows Server 2003 R2 分布式文件系统解决方案概述