题目:

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

思路:

紫书P163联通块问题。

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

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

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. using namespace std;
  6. //求联通块,紫书P163
  7.  
  8. int di[][]={{-,},{,},{,},{,-}};
  9. int id;
  10. int n,m,ex,ey,sx,sy;
  11. char maze[][];
  12. int vis[][];
  13.  
  14. bool judge(int x,int y)//判断合法性,合法:没有越界,没有被访问(vis==0),是草地(#)
  15. {
  16. if(x>=&&x<=n-&&y>=&&y<=m-&&vis[x][y]==&&maze[x][y]=='#')
  17. return true;
  18. return false;
  19. }
  20.  
  21. void dfs(int x,int y,int id)
  22. {
  23.  
  24. // printf("x=%d y=%d id=%d\n",x,y,id);
  25. if(!judge(x,y))
  26. {
  27. //printf("maze[%d][%d]=%c\n",x,y,maze[x][y]);
  28. return;
  29. }
  30. vis[x][y]=id;
  31. for(int i=;i<;i++)//四个方向
  32. {
  33. int nextx=x+di[i][];
  34. int nexty=y+di[i][];
  35.  
  36. if(judge(nextx,nexty))
  37. {
  38. dfs(nextx,nexty,id);
  39. }
  40. }
  41. }
  42. int main()
  43. {
  44. while(scanf("%d%d",&n,&m)==)
  45. {
  46. for(int i=;i<n;i++)
  47. scanf("%s",maze[i]);
  48. memset(vis,,sizeof(vis));
  49. id=;
  50. for(int i=;i<n;i++)
  51. {
  52. for(int j=;j<m;j++)
  53. {
  54. if(judge(i,j))
  55. {
  56. dfs(i,j,++id);
  57. }
  58. }
  59. }
  60. printf("%d\n",id);
  61. // for(int i=0;i<n;i++)
  62. // {
  63. // for(int j=0;j<m;j++)
  64. // {
  65. // printf("%d ",vis[i][j]);
  66. // }
  67. // printf("\n");
  68. // }
  69. }
  70. return ;
  71. }

计蒜客 踏青 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. 生成ISO文件

    cat /dev/cdrom > image.iso dd if=/dev/cdrom of=image.iso mkisofs -V "Label" -o image.is ...

  2. SHELL:多文件的重命名和移动

    rename find mv #实现查找png 和 jpeg文件 #!/bin/bash #file name: rename.sh #use: rename.jpg  and .png files ...

  3. python学习05

    数据类型之字典dict.set集合 1).字典dict 1. dict_1={'name':'tom','age':18} 是以键值对(key-value)的方式,其中键是可hash值的,即表示键是唯 ...

  4. Java SE之[静态成员/类成员]与[非静态成员/实例成员]【static】

    定义 静态成员:又称类成员,使用static修饰符的方法和变量: 非静态成员:又称实例成员,未使用static修饰符的方法和变量. 结论 注:jdk1.8 测试源码 public class Main ...

  5. 组件或者dom的特殊属性

    key:用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes. 常用姿势: 1.结合 v-for,有相同父元素的子元素必须有唯一key. <ul> <li ...

  6. 20175306 MyCP博客总结

    课后必做题:MyCP总结 cp命令了解: · 作用:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若同 ...

  7. static关键字特点

    目录 static关键字特点 静态代码块 static修饰与非static修饰的区别 static关键字特点 随着类的加载而加载 static修饰的变量和方法都会放在方法区中静态区,是属于类的. 静态 ...

  8. 机器学习基石7-The VC Dimension

    注: 文章中所有的图片均来自台湾大学林轩田<机器学习基石>课程. 笔记原作者:红色石头 微信公众号:AI有道 前几节课着重介绍了机器能够学习的条件并做了详细的推导和解释.机器能够学习必须满 ...

  9. Option path is not valid. Please refer to the README.

    使用pomelo创建的项目并且安装依赖项目之后启动项目如出现如下错误提示 [2018-12-18 11:23:16.161] [ERROR] console - Option path is not ...

  10. Gitlab_ansible_jenkins三剑客④jenkins安装图解及freestyle的简单使用

    java环境准备 # 安装jdk1.8 [root@node02 ~]# rpm -ivh jdk-8u181-linux-x64.rpm vim /etc/profile export JAVA_H ...