UVA 572 Oil Deposits(DFS求连通块)
题意:多组案例,每组案例输入一个m行n列的字符矩阵,统计字符‘@’组成多少个连通块。如果两个字符‘@’所在的格子相邻(横、竖或对角线),则说明它们属于同一连通块。
//将判断函数直接归在void函数上简化了代码const int maxn=100+5;char mtr[maxn][maxn]; int m,n; int idx[maxn][maxn]; int X[8]={0,0,1,-1,1,1,-1,-1}; int Y[8]={1,-1,0,0,1,-1,1,-1};void DFS(int x,int y,int id) {if(x<0||x>=m||y<0||y>=n) return;if(mtr[x][y]!='@'||idx[x][y]>0) return;idx[x][y]=id;for(int i=0;i<8;i++){int xx=x+X[i];int yy=y+Y[i];DFS(xx,yy,id);} }int main() {while(cin>>m>>n&&(m!=0||n!=0)){for(int i=0;i<m;i++) cin>>mtr[i];memset(idx,0,sizeof(idx));int cnt=0;for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(idx[i][j]==0&&mtr[i][j]=='@')DFS(i,j,++cnt);}}cout<<cnt<<endl;}return 0; }
转载于:https://www.cnblogs.com/Fy1999/p/9050361.html
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]AncientMessages象形文字识别 (dfs求连通块)
非常有趣的一道题目,大意是给你六种符号的16进制文本,让你转化成二进制并识别出来 代码实现上参考了//http://blog.csdn.net/u012139398/article/details/3 ...
- DFS求连通块数目(深搜)
DFS求连通块数目 这里认为,连通块是包括斜对角线的路径连通的块. 测试数据 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 计算通过@相连的连通块的个数 测试输出: 2 样例代码 ...
- UVA - 572 Oil Deposits
/*1. 图也有DFS遍历和BFS遍历,前者用递归实现,后者用队列实现.由于DFS更容易编写,一般用DFS求连通块.求多维数组连通块的过程也称为种子填充2. 一般要尽量避免同一个格子被访问了两次,但是 ...
- *【ZOJ - 3781】Paint the Grid Reloaded(dfs求连通块缩点,bfs求最短路,建图技巧)
题干: Leo has a grid with N rows and M columns. All cells are painted with either black or white initi ...
- POJ 2386 dfs求连通块
题目: 由于近期的降雨,雨水汇集在农民约翰的田地不同的地方.我们用一个 的网格图表示.每个网格中有水(W) 或是旱地(.).一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑.约翰想弄清楚他 ...
- UVa 352 - The Seasonal War ( DFS求连通块 )
思路 基础DFS 和油田那题思路一毛一样 AC代码 #include <iostream> #include <cstdio> #include <cstring> ...
- uva 572 Oil Deposits
水题 #include <iostream> #include <cstdio> #define N 103 using namespace std; char w[N][N] ...
- 求连通块个数(使用并查集)
并查集求连通块个数的模板 #include<bits/stdc++.h>using namespace std;const int maxn = 1e5+5; vector<int& ...
- [蓝桥杯2018初赛]全球变暖-dfs,bfs,连通块
解题思路: bfs:遍历所有未遍历过的陆地,通过bfs计算出当前位置连通陆地的数量cnt,以及被淹没陆地的数量bound,若cnt == bound表示完整淹没的一个岛屿 dfs:将连通块全部标记,如 ...
最新文章
- Linux运维跳槽必备的40道面试精华题
- 【Qt】qss样式表之:QCalendarWidget,日历窗口样式表设置
- 30天敏捷生活(9-11):调整30天的节奏
- 当前时间转换的秒数_C++ 日期 amp; 时间
- 强强联手 SAP Ariba与苏宁易购共建中国企业智慧采购
- 百度之星初赛(A)——T5
- 分而治之:Oracle 18c 及 12.2 分区新特性的 N 种优化实践(含PPT)
- U-Boot提供的命令【整理】
- Visual Graph图形控件的高级应用
- Java 代码精简之道 | 凌云时刻
- WIFI密码破解笔记
- Linux的SSH安装与配置OpenSSH
- 隐马尔可夫模型(Hidden Markov Model)
- esp32 支持 sd卡 micropython 文件系统_ESP32教程:MicroPython支持-esp文件
- 在IE中为abbr标签加样式(转)
- vue 不同权限显示不同页面
- 五行代码实现图像识别(深入版)
- 手写 React 第 2 节 - 初探 React 实现机制
- 18719 填涂颜色
- 大数据入门学习:SQL与NOSQL数据库