描述

小白和他的朋友周末相约去召唤师峡谷踏青。他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地。草丛通过上下左右 4 个方向扩展其他草丛形成一片草地,任何一片草地中的格子都是草丛,并且所有格子之间都能通过上下左右连通。如果用'#'代表草丛,'.'代表空地,下面的峡谷中有 2 片草地。

##..

..##

处在同一个草地的 2 个人可以相互看到,空地看不到草地里面的人。他们发现有一个朋友不见了,现在需要分头去找,每个人负责一片草地,想知道他们至少需要多少人。

输入
第一行输入 n, m (1 ≤ n,m ≤ 100) 表示峡谷大小。 接下来输入 n 行字符串表示峡谷的地形。 输出
输出至少需要多少人。 输入样例 1 5 6
.#....
..#...
..#..#
...##.
.#....
输出样例 1 5

这道题是一道很典型的深搜(废话)

那么为什么会考虑使用深搜呢?

再认真看题目一遍(如果不是纯粹为了来拿代码的最好这么做)

好的,这道题目看清题意之后,就是要输出有多少片草丛!

而草丛就是由一块或者几块相邻的草来构成的

注意!必须是相邻的!

这里的相邻,指的是四周的四个方向。

那么就是一道很典型的深搜了(这次不是废话)

怎么搜?

先把原图输入,然后双重循环过一遍,发现’#‘字符就把它打成普通的’.’,然后向四周扩展,如果找到草就再循环操作,直到这个草所在的草丛里的所有草都变成了空地,然后ans++。

代码实现就很简单了(DFS的代码一般都较短)

代码如下:

#include<bits/stdc++.h>
using namespace std;
char s[110][110];
int n,m,sum;
int dir[4][2] = {{1,0}, {0,1}, {-1,0},{0,-1}};
int vis[110][110];//={0};
void dfs(int x,int y){
int tx,ty;
for(int i=0;i<4;i++){
tx=x+dir[i][0];
ty=y+dir[i][1];
if(tx>=0&&tx<n&&ty>=0&&ty<m&&vis[tx][ty]==0&&s[tx][ty]=='#'){
vis[tx][ty]=1;
dfs(tx,ty);
}
}
}
int main()
{
cin >>n>>m;
sum=0;
for(int i=0;i<n;i++)
{
cin>>s[i];
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(s[i][j]=='#'&&!vis[i][j])
{
vis[i][j]=1;
dfs(i,j);
sum++;
}
}
}
cout<<sum;
return 0;
}

ov.

最新文章

  1. JSP实现数据传递与保存
  2. maya,mel,eval,stringarray
  3. 如何让我们的VMware虚拟机上网——转载
  4. windows的页自映射机制
  5. php的session.serialize_handler
  6. C++ 初始化与赋值
  7. 看文档要看仔细,英语要加强啊... cocos2d-x 的 API 和 对应版本的 cocos2d-js 的 API 没有完全对应
  8. UVA127- &quot;Accordian&quot; Patience(模拟链表)
  9. 探求Floyd算法的动态规划本质(转)
  10. sublime怎么实现函数之间的跳转
  11. mysql索引使用注意事项
  12. BZOJ_1672_[Usaco2005 Dec]Cleaning Shifts 清理牛棚_动态规划+线段树
  13. 北京教育软件创业公司招 .net工程师
  14. Red-Gate.NET.Reflector.v8.0.1.308(内含注册机Keygen与注册图解)
  15. Cannot find module &#39;socket.io&#39;
  16. scrapy 报错 no module named win32api 的解决方案
  17. java动态加载
  18. centos6.5 设置ssh无密码登录
  19. jquery checkbox选框操作
  20. LINQ入门教程之各种标准查询操作符(二)

热门文章

  1. 零元学Expression Blend 4 - Chapter 17 用实例了解互动控制项「CheckBox」I
  2. Java8 的一些新特性总结
  3. How to setup Assigned Access in Windows 10 (Kiosk Mode) 设置分配的访问权限(Kiosk模式)
  4. SOA 相关开发调试软件
  5. RESTful API设计原则与规范
  6. 一条命令,秒秒钟完成MD5、SHA1校验,这就叫效率!
  7. 沙漏集合 good
  8. Python基础(六) 函数
  9. spring boot中使用servlet、listener和filter
  10. Linux中$的特殊用法