HDU 1241 Oil Deposits (DFS)
2015-08-23 17:33
323 查看
题目链接:Oil Deposits
解析:问有多少个“@”块,其中每个块内的各个“@”至少通过八个方向之一相邻。
直接从“@”的地方开始向相邻八个方向搜索,每搜到一个格子,就将它替换成“.”,一次搜索就会搜索完一个块,记录搜索的次数为答案。
AC代码:
解析:问有多少个“@”块,其中每个块内的各个“@”至少通过八个方向之一相邻。
直接从“@”的地方开始向相邻八个方向搜索,每搜到一个格子,就将它替换成“.”,一次搜索就会搜索完一个块,记录搜索的次数为答案。
AC代码:
#include <cstdio> #include <cstring> #include <queue> using namespace std; char mz[110][110]; const int dir[8][2] = {0, 1, 1, 0, 0, -1, -1, 0, 1, 1, -1, -1, 1, -1, -1, 1}; //八个方向 int n, m; void dfs(int sx, int sy){ mz[sx][sy] = '.'; //搜到的位置替换成‘.’ for(int i=0; i<8; i++){ int x = sx + dir[i][0]; int y = sy + dir[i][1]; if(x >= 0 && x < n && y >= 0 && y < m && mz[x][y] == '@') dfs(x, y); } return ; } int main(){ // freopen("in.txt", "r", stdin); while(scanf("%d%d", &n, &m) == 2 && n){ for(int i=0; i<n; i++){ scanf("%s", mz[i]); } int ans = 0; for(int i=0; i<n; i++) for(int j=0; j<m; j++){ if(mz[i][j] == '@'){ dfs(i, j); ans ++; //记录搜索次数 } } printf("%d\n", ans); } return 0; }
相关文章推荐
- Net 一个请求的处理流程
- 数据库基础知识
- Android线程间异步通信机制源码分析
- JSP 笔记
- HDU 4709 Herding(叉乘法)
- jQuery自定义动画
- web app变革之rem
- Order Book
- 数组及多维数组
- BZOJ 2120: 数颜色 分块
- ural Parliament 二叉排序树前/...序遍历的转换
- 报错:ORA-02287: 此处不允许序号
- C语言中,数组名作为参数传递给函数时,退化为指针
- wireshark相关
- 20150820 - 作业 【自行学习命令】
- Redhat7安装Madagascar简易教程
- Cypher自己常用语句
- day08
- Windows上安装使用MongoDB(一)
- js算法:分治法-归并排序