uva 572 oil deposits——yhx
2016-05-16 10:02
375 查看
Oil Deposits |
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; otherwiseand
. 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.1 #include<cstdio> 2 #include<cstring> 3 int xx[8]={-1,-1,-1,0,0,1,1,1},yy[8]={-1,0,1,-1,1,-1,0,1},m,n; 4 bool map[110][110]; 5 void dfs(int x,int y) 6 { 7 int i,j,k,p,q; 8 for (i=0;i<=7;i++) 9 { 10 p=x+xx[i]; 11 q=y+yy[i]; 12 if (p>=1&&p<=m&&q>=1&&q<=n&&map[p][q]) 13 { 14 map[p][q]=0; 15 dfs(p,q); 16 } 17 } 18 } 19 int main() 20 { 21 int i,j,k,p,q,ans; 22 char c,s[150]; 23 while (scanf("%d%d",&m,&n)&&m&&n) 24 { 25 memset(map,0,sizeof(map)); 26 gets(s); 27 for (i=1;i<=m;i++) 28 { 29 gets(s+1); 30 for (j=1;j<=n;j++) 31 if (s[j]=='@') 32 map[i][j]=1; 33 } 34 ans=0; 35 for (i=1;i<=m;i++) 36 for (j=1;j<=n;j++) 37 if (map[i][j]) 38 { 39 map[i][j]=0; 40 dfs(i,j); 41 ans++; 42 } 43 printf("%d\n",ans); 44 } 45 }
每找到一个点,就将他DFS,标记掉所有周围的点。
相关文章推荐
- 通过Service Builder改变了原数据库的主键,所有原有记录被删除。
- 【Java】类执行过程
- HashSet vs TreeSet vs LinkedHashSet
- raspberry树莓派安装CUPS实现打印服务器共享HP P1007打印机
- setTransformationMethod 的使用
- Java 文件字符过滤流练习--银行卡信息系统(console)
- 在团队协作中,该如何提交一份干净、可靠的代码给队友?
- 对AngularJS的编译和链接过程讲解一步到 4000 位的文章
- 移动端表单验证控件:mobileValidate
- uva 297 quadtrees——yhx
- uva 839 not so mobile——yhx
- uva 558 tree(不忍吐槽的题目名)——yhx
- uva 122 trees on the level——yhx
- AutoLayout I
- xfire配置
- Sql tempdb 临时数据库相关知识点
- thinkPHP删除前弹出确认框的简单实现方法
- openstack for Mitaka——Shared File System(Manila)安装初探
- “personal.xlsb总是打开”解决办法
- java 用 Calendar类写万年历