UVA - 572 Oil Deposits-dfs找连通块
Discription
给定一个包含@ *的二维数组,输出有几个@是联通的,如果一个@在另外一个@相邻的八个方向则视作相邻。
Input
包含@ *的二维数组。
Output
输出联通的个数
解题思路:
从每一个@格子出发,递归遍历它周围的@格子,每次访问一个格子就给它写上一个“连通分量编号”(vis数组),这样可以在访问之前检查它是否已经有了编号,从而避免同一个格子访问多次。
代码如下:
#include <iostream>
#include <cstring>
using namespace std;
const int N = 110;
char g[N][N];
int n, m;int dx[] = {0, 0, 1, -1, 1, 1, -1, -1};int dy[] = {1, -1, 0, 0, 1, -1, 1, -1};
int vis[N][N];void dfs(int x, int y, int id) {if (x < 0 || x >= n || y < 0 || y >= m)return ;if (vis[x][y] != 0 || g[x][y] != '@')return ;vis[x][y] = id;for (int i = 0; i < 8; i++) {int xx = x + dx[i];int yy = y + dy[i];dfs(xx, yy, id);}
}int main() {while (cin >> n >> m, n, m) {int cnt = 0;for (int i = 0; i < n; i++)cin >> g[i];memset(vis, 0, sizeof(vis));for (int i = 0; i < n; i++)for (int j = 0; j < m; j++)if (vis[i][j] == 0 && g[i][j] == '@')dfs(i, j, ++cnt);cout << cnt << endl;}return 0;
}
UVA - 572 Oil Deposits-dfs找连通块相关推荐
- UVa572 Oil Deposits DFS求连通块
技巧:遍历8个方向 for(int dr = -1; dr <= 1; dr++)for(int dc = -1; dc <= 1; dc++)if(dr != 0 || dc != 0) ...
- UVA - 572 Oil Deposits
/*1. 图也有DFS遍历和BFS遍历,前者用递归实现,后者用队列实现.由于DFS更容易编写,一般用DFS求连通块.求多维数组连通块的过程也称为种子填充2. 一般要尽量避免同一个格子被访问了两次,但是 ...
- [uva]AncientMessages象形文字识别 (dfs求连通块)
非常有趣的一道题目,大意是给你六种符号的16进制文本,让你转化成二进制并识别出来 代码实现上参考了//http://blog.csdn.net/u012139398/article/details/3 ...
- uva 572 Oil Deposits
水题 #include <iostream> #include <cstdio> #define N 103 using namespace std; char w[N][N] ...
- DFS求连通块数目(深搜)
DFS求连通块数目 这里认为,连通块是包括斜对角线的路径连通的块. 测试数据 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 计算通过@相连的连通块的个数 测试输出: 2 样例代码 ...
- [蓝桥杯2018初赛]全球变暖-dfs,bfs,连通块
解题思路: bfs:遍历所有未遍历过的陆地,通过bfs计算出当前位置连通陆地的数量cnt,以及被淹没陆地的数量bound,若cnt == bound表示完整淹没的一个岛屿 dfs:将连通块全部标记,如 ...
- HDU 2952 Counting Sheep (DFS找联通块)
题目链接:请戳这里. 题目大意及思路:读懂题意就好了,就是DFS找联通块. 没什么好说的,见代码吧. #include<cstdio> #include<cstring> ...
- HDU-1241 Oil Deposits (DFS)
Oil Deposits Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total ...
- UVA572 Oil Deposits DFS求解
小白书上经典DFS题目. 1. 递归实现 // from: https://www.cnblogs.com/huaszjh/p/4686092.html#include <stdio.h> ...
- 【LeetCode - 1254】统计封闭岛屿的数目(dfs,连通块)
题目链接:https://leetcode-cn.com/problems/number-of-closed-islands/ 有一个二维矩阵 grid ,每个位置要么是陆地(记号为 0 )要么是水域 ...
最新文章
- 使用ldirectord实现后端RS健康状态监测及LVS调度功能
- 大于等于符号_英语标点符号怎么读,这下全知道了!
- 【原创】mysql数据库异常:data truncate for column “*” at row *;data too long *。原因,及解决。...
- 使用ThinkPHP扩展,实现Redis的CURD操作。
- html背景半透明 字不变,css实现背景半透明文字不透明的效果示例
- 远程计算机无法操作,win7系统的QQ远程协助无法控制计算机的问题的解决方法
- springboot毕设项目自驾旅游网站的设计与实现gah85(java+VUE+Mybatis+Maven+Mysql)
- 小李飞刀 之 程序员版
- 中公教育计算机老师笔试面试题,2020下高中信息技术教师资格证面试试题及答案【1月9日下午】...
- MyBatis参数绑定
- github实用的搜索小技巧
- 对文件进行筛选c语言,用c语言实现文本文件中的字符筛选分析。
- Mysql数据库报错:Row size too large ( 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DY
- 客户关系应该如何管理?
- 施耐德电气举办金融数据中心研讨会,“大咖”齐聚共话智慧未来
- 新加坡公司和新加坡基金会有什么区别?如何发币
- arcgis engine10.2版本 ,狭长面分析,可自定义长宽比例
- 使用Python把一堆图片排序后转换成PDF,最终得到一人之下漫画pdf
- 360安全卫士与腾讯QQ打得如此火热,引发用户的思考。
- 基于STM32的倾斜仪设计(一)—— 硬件设计(1)
热门文章
- C语言试题三十七之求除一个2×m整型二维数组中最大元素的值,并将此值返回调用函数。
- Makefile的学习
- Android之常用开发框架
- 【C语言简单说】七:自定义函数(3)
- sqlserver建表语句_重新认识MySQL中的COUNT语句
- 双网卡上网冲突解决_【技术文章】局域网IP地址冲突罪魁祸首是什么?这几点要注意!(附高手处理方法)...
- 贝叶斯分类器_Sklearn 中的朴素贝叶斯分类器
- 高一被清华姚班录取,高三委拒谷歌offer,一个重度网瘾少年到理论计算机科学家的蜕变...
- Java 常见的 30 个误区与细节!
- 盘点那些让程序员目瞪口呆的Bug都有什么?