【深搜(DFS)-例题-踏青】-C++
2024-10-20 01:42:47
描述
小白和他的朋友周末相约去召唤师峡谷踏青。他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地。草丛通过上下左右 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.
最新文章
- JSP实现数据传递与保存
- maya,mel,eval,stringarray
- 如何让我们的VMware虚拟机上网——转载
- windows的页自映射机制
- php的session.serialize_handler
- C++ 初始化与赋值
- 看文档要看仔细,英语要加强啊... cocos2d-x 的 API 和 对应版本的 cocos2d-js 的 API 没有完全对应
- UVA127- ";Accordian"; Patience(模拟链表)
- 探求Floyd算法的动态规划本质(转)
- sublime怎么实现函数之间的跳转
- mysql索引使用注意事项
- BZOJ_1672_[Usaco2005 Dec]Cleaning Shifts 清理牛棚_动态规划+线段树
- 北京教育软件创业公司招 .net工程师
- Red-Gate.NET.Reflector.v8.0.1.308(内含注册机Keygen与注册图解)
- Cannot find module &#39;socket.io&#39;
- scrapy 报错 no module named win32api 的解决方案
- java动态加载
- centos6.5 设置ssh无密码登录
- jquery checkbox选框操作
- LINQ入门教程之各种标准查询操作符(二)
热门文章
- 零元学Expression Blend 4 - Chapter 17 用实例了解互动控制项「CheckBox」I
- Java8 的一些新特性总结
- How to setup Assigned Access in Windows 10 (Kiosk Mode) 设置分配的访问权限(Kiosk模式)
- SOA 相关开发调试软件
- RESTful API设计原则与规范
- 一条命令,秒秒钟完成MD5、SHA1校验,这就叫效率!
- 沙漏集合 good
- Python基础(六) 函数
- spring boot中使用servlet、listener和filter
- Linux中$的特殊用法