Oil Deposits
2015-08-03 20:46
281 查看
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 18183 Accepted Submission(s): 10480[align=left]Problem Description[/align]
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.
[align=left]Input[/align]
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.
[align=left]Output[/align]
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.
[align=left]Sample Input[/align]
1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 0 0
[align=left]Sample Output[/align]
0 1 2 2 唉,刚开始用字符输出,不知道怎么了输出时结果总是少一行,后来改为字符串输出,才符合要求。#include<stdio.h> #include<cstring> #include<algorithm> using namespace std; char s[105][105]; int a,b,r,ans,q; void f(int x,int y) { if(x<0||x>a-1||y<0||y>b-1) return ; if(s[x][y]=='*') return ; //ans++; s[x][y]='*'; f(x,y+1); f(x,y-1); f(x+1,y); f(x-1,y); f(x-1,y-1); f(x+1,y+1); f(x+1,y-1); f(x-1,y+1); } int main() { int k,x,y,h,e; while(scanf("%d%d",&a,&b),a|b) { getchar(); r=0;k=0;//; int max; q=0; int i,j; //memset(s,0,sizeof(s)); for(i=0;i<a;i++) { scanf("%s",s[i]); } for(i=0;i<a;i++) for(j=0;j<b;j++) if(s[i][j]=='@') { q++; f(i,j); } printf("%d\n",q); } return 0; }
相关文章推荐
- hihoCoder 1114 小Hi小Ho的惊天大作战:扫雷·一
- JIURL玩玩Win2k进程线程篇 PEB
- QEvent整理归纳:140种类型,29个继承类,7个函数,3种事件来源
- [leedcode 198] House Robber
- HUD1.2.4 Nasty Hacks
- 膜拜大神
- 黑马程序员——Java基础---网络编程
- hdu1518(Square)深搜+剪枝
- DFS POJ 3087 Shuffle'm Up
- 20150803工作日志
- UISwitch
- 文件上传和下载(转)
- 黑马程序员---iOS基础---OC中的ARC、分类、block
- 实际用户ID,有效用户ID及设置用户ID
- linux 实际用户ID、有效用户ID以及保存的设置用户ID
- 南阳 oj 重建二叉树 题目756
- 离线下载的免费网站
- hdoj 1241 Oil Deposits
- java中添加了jtable组件,却显示不出来
- bootstrap组件