题意是这种。给你一个N*M的矩形图。这个图由两个东西组成。'.'和'W',

W代表这个地方有水。

.代表这个地方没水。

假设一个有水的地方它的上下左右,左上,坐下。右上。右下也有水,那么

就看成它们连成一块,连在一起的有水的地方看成一个水洼。

如今告诉你N和M以及这个矩形图。要你推断图中有多少个水洼。

我是用dfs做的。

详细做法是首先找一个有水的点,然后假设这个地方有水。则水洼数+1,

然后从这个点出发。进行dfs,把与它相连的有水的地方都变成没水的地方,

也就是'.'。这种话,最后得出的水洼数就是题意所要求的。

代码例如以下

#include<iostream>
using namespace std;
int row,line;
char map[110][110];
void init()
{
int i,j;
scanf("%d%d",&row,&line);
for(i=0;i<row;i++)
scanf("%s",map[i]);
}
bool isbeyond(int i,int j)
{
if(i<0||i>=row||j<0||j>=line)
return 1;
return 0;
}
void dfs(int i,int j)
{
int x,y;
map[i][j]='.';
for(x=-1;x<2;x++)
for(y=-1;y<2;y++)
if(!isbeyond(i+x,j+y)&&map[i+x][j+y]=='W')
dfs(i+x,j+y);
}
void solve()
{
int sum=0,i,j;
init();
for(i=0;i<row;i++)
for(j=0;j<line;j++)
if(map[i][j]=='W')
{
sum++;
dfs(i,j);
}
printf("%d\n",sum);
}
int main()
{
solve();
}

最新文章

  1. Entity Framework 6 Recipes 2nd Edition(11-2)译 -&gt; 用”模型定义”函数过滤实体集
  2. doT.js详细介绍
  3. nRF52832开发日志--SAADC调试
  4. python2.1-原理之琐碎技巧
  5. c#中的linq二
  6. android获取手机的所有通讯录的号码和sim卡号码
  7. DEM渲染洼地淹没图(转)
  8. PHPCMS 使用图示和PHPCMS二次开发教程(转)
  9. JavaScript Web Application summary
  10. uva 1434 - YAPTCHA(数论)
  11. 微信小程序底部弹窗动画
  12. usb2.0、usb3.0、usb3.1、type-c 接口含义与区别
  13. JS控制文本框内键盘上下左右键的焦点
  14. Restful Service 中 DateTime 在 url 中传递
  15. A1071. Speech Patterns
  16. zw版【转发&#183;台湾nvp系列Delphi例程】HALCON HistoToThresh2
  17. zabbix 自定义key与参数Userparameters监控脚本输出
  18. spring cloud 报错Error creating bean with name &#39;hystrixCommandAspect&#39; ,解决方案
  19. testng几种写法
  20. Linux系统常用命令汇总

热门文章

  1. DELPHI学习---类和对象(五篇)
  2. robots.txt禁止搜索引擎收录
  3. R语言数据框行转列实例
  4. hdu 1086(判断线段相交)
  5. ThinkPHP---RBAC
  6. winXP JDK由1.8改为1.6
  7. hdu1824(two-sat)
  8. hadoop在实现kmeans算法——一个mapreduce实施
  9. Swift 的类、结构体、枚举等的构造过程Initialization(下)
  10. C#之网络