题目:

https://www.jisuanke.com/course/2291/182234

思路:

紫书P163联通块问题。

1.遍历所有块,找到草地,判断合法性,合法其id值加一,最后加出来的id值就是联通块的数量。

2.注意结束条件,先判断是否结束dfs,再给vis赋值。

 #include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
//求联通块,紫书P163 int di[][]={{-,},{,},{,},{,-}};
int id;
int n,m,ex,ey,sx,sy;
char maze[][];
int vis[][]; bool judge(int x,int y)//判断合法性,合法:没有越界,没有被访问(vis==0),是草地(#)
{
if(x>=&&x<=n-&&y>=&&y<=m-&&vis[x][y]==&&maze[x][y]=='#')
return true;
return false;
} void dfs(int x,int y,int id)
{ // printf("x=%d y=%d id=%d\n",x,y,id);
if(!judge(x,y))
{
//printf("maze[%d][%d]=%c\n",x,y,maze[x][y]);
return;
}
vis[x][y]=id;
for(int i=;i<;i++)//四个方向
{
int nextx=x+di[i][];
int nexty=y+di[i][]; if(judge(nextx,nexty))
{
dfs(nextx,nexty,id);
}
}
}
int main()
{
while(scanf("%d%d",&n,&m)==)
{
for(int i=;i<n;i++)
scanf("%s",maze[i]);
memset(vis,,sizeof(vis));
id=;
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
if(judge(i,j))
{
dfs(i,j,++id);
}
}
}
printf("%d\n",id);
// for(int i=0;i<n;i++)
// {
// for(int j=0;j<m;j++)
// {
// printf("%d ",vis[i][j]);
// }
// printf("\n");
// }
}
return ;
}

计蒜客 踏青 dfs的更多相关文章

  1. 计蒜客 等边三角形 dfs

    题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...

  2. 计蒜客-A1139 dfs

    在一个 n \times mn×m 的方格地图上,某些方格上放置着炸弹.手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去. 现在为了引爆地图上 ...

  3. 计蒜客的一道题dfs

    这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...

  4. 计蒜客 方程的解数 dfs

    题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...

  5. 计蒜客 买书 dfs

    题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...

  6. 计蒜客 NOIP 提高组模拟竞赛第一试 补记

    计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...

  7. [计蒜客] 矿石采集【记搜、Tarjan缩点+期望Dp】

    Online Judge:计蒜客信息学3月提高组模拟赛 Label:记搜,TarJan缩点,树状数组,期望Dp 题解 整个题目由毫无关联的两个问题组合成: part1 问题:对于每个询问的起点终点,求 ...

  8. 计蒜客 作弊揭发者(string的应用)

    鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...

  9. 计蒜客模拟赛5 D2T1 成绩统计

    又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...

随机推荐

  1. uCosII中的任务

    任务基本概念 任务是一个接受操作系统管理的独立运行单元,在uCosII中类似与普通平台上的main()函数,需要自己来保护其因调用或中断二产生的断点,所以需要一个自己的私有堆栈,即任务堆栈: 任务有两 ...

  2. gantt project 使用

    市场上有不少项目计划类系统, 很多都是收费的, 还有很多都是web版, 这些都自然被排除了. 免费好用的还真不多, 今天简单介绍一下 gantt project 这个软件, 开源并且免费, 基于 ja ...

  3. Technocup 2019 - Elimination Round 2

    http://codeforces.com/contest/1031 (如果感觉一道题对于自己是有难度的,不要后退,懂0%的时候敲一遍,边敲边想,懂30%的时候敲一遍,边敲边想,懂60%的时候敲一遍, ...

  4. C# winform 播放资源中的音频文件

    Mark一下 SoundPlayer simpleSound = new SoundPlayer(Properties.Resources.ResourceManager.GetStream(shen ...

  5. java中import详解

    前言 import与package机制相关,这里先从package入手,再讲述import以及static import的作用. package package名称就像是我们的姓,而class名称就像 ...

  6. KML,SHP TAB互转,GDAL

    最近在接触地图数据转换的东西,从硬件kml的数据转换其他的格式,因为从没做过着东西, 先去了解kml文件格式 http://baike.baidu.com/view/400307.htm?fr=ala ...

  7. 【转载】PyTorch系列 (二):pytorch数据读取

    原文:https://likewind.top/2019/02/01/Pytorch-dataprocess/ Pytorch系列: PyTorch系列(一) - PyTorch使用总览 PyTorc ...

  8. Babel学习小记

    一.babel配置文件中的plugins和presets是什么? 1.首先说说babel是什么,babel是一个JavaScript转码器,帮助我们把浏览器不兼容的ES6语法转换成ES5语法: 2.接 ...

  9. spring cloud 学习笔记(1)

    SpringCloud + Eureka / Nacos git:https://github.com/huanmsf/springCloudLearn.git 项目目录: 父pom: <?xm ...

  10. [转] word2vec

    from: https://www.cnblogs.com/peghoty/p/3857839.html 另附一个比较好的介绍:https://zhuanlan.zhihu.com/p/2630679 ...