搜索专题:HDU1241 Oil Deposits
来源:互联网 发布:如何用手机检查网络 编辑:程序博客网 时间:2024/05/22 12:52
Oil Deposits
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 32337 Accepted Submission(s): 18765
Problem Description
The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous square plots. It then analyzes each plot separately, using sensing equipment to determine whether or not the plot contains oil. A plot containing oil is called a pocket. If two pockets are adjacent, then they are part of the same oil deposit. Oil deposits can be quite large and may contain numerous pockets. Your job is to determine how many different oil deposits are contained in a grid.
Input
The input file contains one or more grids. Each grid begins with a line containing m and n, the number of rows and columns in the grid, separated by a single space. If m = 0 it signals the end of the input; otherwise 1 <= m <= 100 and 1 <= n <= 100. Following this are m lines of n characters each (not counting the end-of-line characters). Each character corresponds to one plot, and is either `*', representing the absence of oil, or `@', representing an oil pocket.
Output
For each grid, output the number of distinct oil deposits. Two different pockets are part of the same oil deposit if they are adjacent horizontally, vertically, or diagonally. An oil deposit will not contain more than 100 pockets.
Sample Input
1 1*3 5*@*@***@***@*@*1 8@@****@*5 5 ****@*@@*@*@**@@@@*@@@**@0 0
Sample Output
0122
Source
Mid-Central USA 1997
Recommend
Eddy | We have carefully selected several similar problems for you: 1240 1181 1253 1072 1175
DFS求连通块就行了,但是注意是八个方向的,我用了方向数组和for循环,想想自己当初是不是傻,手写八个DFS。。。
Problem :1241 ( Oil Deposits ) Judge Status :Accepted
RunId : 21282350 Language : G++ Author :hnustwanghe
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int N = 100 + 5;char mat[N][N];bool visit[N][N];int n,m;const int dir[8][2]={{1,0},{0,1},{-1,0},{0,-1},{1,1},{-1,-1},{-1,1},{1,-1}};void DFS(int x,int y){if(x<0 || x>=n || y<0 || y>=m || visit[x][y] || mat[x][y]!='@') return ;visit[x][y] = true;for(int d=0;d<8;d++){int newx = x + dir[d][0];int newy = y + dir[d][1];DFS(newx,newy);}}int solve_question(){memset(visit,0,sizeof(visit));int cnt = 0;for(int i=0;i<n;i++)for(int j=0;j<m;j++){if(!visit[i][j] && mat[i][j]=='@'){DFS(i,j);cnt++;}}return cnt;}int main(){while(scanf("%d %d",&n,&m)==2&&(n||m)){for(int i=0;i<n;i++)scanf("%s",mat[i]);printf("%d\n",solve_question());}return 0;}
阅读全文
0 0
- 搜索专题:HDU1241 Oil Deposits
- hdu1241 Oil Deposits(搜索)
- HDU1241 Oil Deposits 搜索入门
- [kuangbin带你飞]专题一 简单搜索 L - Oil Deposits HDU1241
- Oil Deposits hdu1241 dfs
- hdu1241 Oil Deposits
- HDU1241:Oil Deposits
- HDU1241:Oil Deposits(DFS)
- HDU1241 Oil Deposits
- hdu1241(DFS Oil Deposits )
- HDU1241 Oil Deposits
- HDU1241-Oil Deposits
- HDU1241:Oil Deposits(DFS)
- hdu1241 Oil Deposits
- HDU1241 Oil Deposits DFS
- HDU1241 Oil Deposits DFS
- hdu1241(Oil Deposits)
- hdu1241(Oil Deposits)
- WM_DEVICECHANGE
- 2017暑期ACM俱乐部个人训练赛第1场
- 新手上路 jquery 选择器篇(三) 代码笔记
- WUST 1846 营养膳食(贪心)【简单贪心类模板】
- LeetCode_Easy心得:21. Merge Two Sorted Lists(C语言)
- 搜索专题:HDU1241 Oil Deposits
- uart_stdio实验
- hdu1000 A + B Problem(C语言)
- 看过的机器学习深度学习,NLP课程,视频
- 微信企业号开发之access_token接口调用示例
- vue-cli构建项目之mock data
- C/S架构和B/S架构的区别及优缺点
- HDU-1702 ACboy needs your help again! 栈和队列
- POJ 2406 KMP 解题报告