有一个大小为N*M的园子,雨后积起了水,八连通的积水被认为是链接在一起的求出园子里一共有多少水洼?

***

*W*

***

  1. /**
  2. *进行深度优先搜索,从第一个W开始,将八个方向可以到达的 W修改为 .
  3. *每次进行深度优先搜索的时候就将链接的水坑换成了.
  4. *进行的深度优先搜索的次数就是水坑数
  5. */
  6. #include<stdio.h>
  7. #include<string.h>
  8. const int MAX=;
  9. int N,M;
  10. char filed[MAX][MAX]; //园子的构造
  11. //现在的位置(x,y)
  12. void dfs(int x,int y){
  13. //将现在所在的位置替换为‘.’
  14. filed[x][y]='.';
  15. //循环遍历移动的8个方向
  16. for(int dx=-;dx<=;dx++){
  17. for(int dy=-;dy<=;dy++){
  18. int nx=x+dx,ny=y+dy;
  19. //判断(nx,ny是不是在园子内,以及是否有积水)
  20. if(<=nx && nx<N && <=ny && ny<M && filed[nx][ny]=='W')
  21. dfs(nx,ny);
  22. }
  23. }
  24. return;
  25. }
  26. void solve(){
  27. int res=;
  28. for(int i=;i<N;i++)
  29. for(int j=;j<M;j++){
  30. if(filed[i][j]=='W'){
  31. dfs(i,j); //从有积水的地方开始遍历,遍历的次数就是水坑的个数
  32. res++;
  33. }
  34. }
  35. printf("%d\n",res);
  36. }
  37. int main(){
  38. while(scanf("%d%d",&N,&M)==){
  39. getchar();
  40. for(int i=;i<N;i++)
  41. for(int j=;j<M;j++)
  42. scanf("%c",&filed[i][j]);
  43. solve();
  44. }
  45. return ;
  46. }

Lake Counting (POJ No.2386)的更多相关文章

  1. Lake Counting(poj 2386)

    题目描述: Description Due to recent rains, water has pooled in various places in Farmer John's field, wh ...

  2. Lak3 Counting(POJ No.2386)

    问题描述: 有个大小为N*M的园子,雨后积起了水.八连通的积水被认为是连接在一起的.求出园子里总共有多少水洼. N, M <= 100 输入例: : 问题分析: 八连通即:上.左上.左,左下,下 ...

  3. DFS----Lake Counting (poj 2386)

    Lake Counting(POJ No.2386) Description Due to recent rains, water has pooled in various places in Fa ...

  4. POJ 2386 Lake Counting(深搜)

    Lake Counting Time Limit: 1000MS     Memory Limit: 65536K Total Submissions: 17917     Accepted: 906 ...

  5. POJ 2386 Lake Counting

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28966   Accepted: 14505 D ...

  6. [POJ 2386] Lake Counting(DFS)

    Lake Counting Description Due to recent rains, water has pooled in various places in Farmer John's f ...

  7. POJ 2386 Lake Counting(搜索联通块)

    Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 48370 Accepted: 23775 Descr ...

  8. POJ:2386 Lake Counting(dfs)

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 40370   Accepted: 20015 D ...

  9. poj 2386:Lake Counting(简单DFS深搜)

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18201   Accepted: 9192 De ...

随机推荐

  1. 方案:在Eclipse IDE 中搭建Python开发环境

    Eclipse是一款功能强大的IDE,Python是一种功能强大的计算机语言,但是Python的IDE环境确实很缺乏,如果在强大的Eclipse中添加Python开发环境,那样就很完美了. 在这里,我 ...

  2. POJ3630——简单Trie树

    这个题的意思是说,给出一些字符串,判断是否有字符串是另一个字符串的前缀,当然可以用排序水过,不过这个题拿来练习一下Trie树不错. 这个题在poj的discuss上好多人说必须要静态建树,估计都是用了 ...

  3. python标准库 sysconfig模块

    # -*- coding: utf-8 -*-# python:2.x__author__ = 'Administrator'import sysconfig#sysconfig:解释器编译时配置#作 ...

  4. go - 复合类型 array, slice, map

    Go 语言支持复合类型: 数组:array 切片:slice 指针:pointer 字典:map 通道:chan 结构体:struct 接口:interface 1. array   同一类型数据的集 ...

  5. xcode 执行时模拟器不可选的问题

    好久没写博客了,上一次是什么时候都想不起来了. 之前总认为脑袋记住了,用过了就能够了,干嘛要写博客,简直浪费时间.事实上没事写写博客优点还是挺多的.这样既能够对自己用过的和学到的东西做一个总结,也能提 ...

  6. vs连接mysql出错解决方法

    vs连接mysql出错解决方法 先按以下的步骤配置一下: **- (1)打开VC6.0 工具栏Tools菜单下的Options选项.在Directories的标签页中右边的"Show dir ...

  7. Android ---------- 清单文件中Activity常规设置

    <activity android:name="xxxxx" android:alwaysRetainTaskState="true" android:c ...

  8. .NET的 DataTable中某列求和

    public DataTable ReportDetail { get; set; }//定义datatable属性 this.txtTotalPiece.Text = ReportDetail.Co ...

  9. 关于uisliderview 监听停止滑动的状态

    今天遇到一个问题,做颜色控制的时候,通过slider 改变颜色的亮度.如果直接在slider 上绑定事件,则改变一次就需要向服务器发送一次请求.这种是显然不合理的. 所以使用了下面的解决方法 先将sl ...

  10. 软件测试作业三 尝试使用JUnit

    写一个判断三角形种类的代码,对其进行测试. 判断三角形代码: package 测试1; public class sjx { public String f(int a,int b,int c) { ...