计蒜客 踏青 dfs
题目:
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的更多相关文章
- 计蒜客 等边三角形 dfs
题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...
- 计蒜客-A1139 dfs
在一个 n \times mn×m 的方格地图上,某些方格上放置着炸弹.手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去. 现在为了引爆地图上 ...
- 计蒜客的一道题dfs
这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...
- 计蒜客 方程的解数 dfs
题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...
- 计蒜客 买书 dfs
题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...
- 计蒜客 NOIP 提高组模拟竞赛第一试 补记
计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...
- [计蒜客] 矿石采集【记搜、Tarjan缩点+期望Dp】
Online Judge:计蒜客信息学3月提高组模拟赛 Label:记搜,TarJan缩点,树状数组,期望Dp 题解 整个题目由毫无关联的两个问题组合成: part1 问题:对于每个询问的起点终点,求 ...
- 计蒜客 作弊揭发者(string的应用)
鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...
- 计蒜客模拟赛5 D2T1 成绩统计
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...
随机推荐
- 生成ISO文件
cat /dev/cdrom > image.iso dd if=/dev/cdrom of=image.iso mkisofs -V "Label" -o image.is ...
- SHELL:多文件的重命名和移动
rename find mv #实现查找png 和 jpeg文件 #!/bin/bash #file name: rename.sh #use: rename.jpg and .png files ...
- python学习05
数据类型之字典dict.set集合 1).字典dict 1. dict_1={'name':'tom','age':18} 是以键值对(key-value)的方式,其中键是可hash值的,即表示键是唯 ...
- Java SE之[静态成员/类成员]与[非静态成员/实例成员]【static】
定义 静态成员:又称类成员,使用static修饰符的方法和变量: 非静态成员:又称实例成员,未使用static修饰符的方法和变量. 结论 注:jdk1.8 测试源码 public class Main ...
- 组件或者dom的特殊属性
key:用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes. 常用姿势: 1.结合 v-for,有相同父元素的子元素必须有唯一key. <ul> <li ...
- 20175306 MyCP博客总结
课后必做题:MyCP总结 cp命令了解: · 作用:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若同 ...
- static关键字特点
目录 static关键字特点 静态代码块 static修饰与非static修饰的区别 static关键字特点 随着类的加载而加载 static修饰的变量和方法都会放在方法区中静态区,是属于类的. 静态 ...
- 机器学习基石7-The VC Dimension
注: 文章中所有的图片均来自台湾大学林轩田<机器学习基石>课程. 笔记原作者:红色石头 微信公众号:AI有道 前几节课着重介绍了机器能够学习的条件并做了详细的推导和解释.机器能够学习必须满 ...
- Option path is not valid. Please refer to the README.
使用pomelo创建的项目并且安装依赖项目之后启动项目如出现如下错误提示 [2018-12-18 11:23:16.161] [ERROR] console - Option path is not ...
- Gitlab_ansible_jenkins三剑客④jenkins安装图解及freestyle的简单使用
java环境准备 # 安装jdk1.8 [root@node02 ~]# rpm -ivh jdk-8u181-linux-x64.rpm vim /etc/profile export JAVA_H ...