题目

题目描述

奶牛 BessieBessieBessie 计划好好享受柔软的春季新草。新草分布在 RRR 行 CCC 列的牧场里。它想计算一下牧场中的草丛数量。

在牧场地图中,每个草丛要么是单个#,要么是有公共边的相邻两个#。给定牧场地图,计算有多少个草丛。

例如,考虑如下 555 行 666 列的牧场地图

.#....
..#...
..#..#
...##.
.#....

这个牧场有 555 个草丛:一个在第一行,一个在第二列横跨了二、三行,一个在第三行,一个在第四行横跨了四、五列,最后一个在第五行。

输入格式

第一行包含两个整数 RRR 和 CCC,中间用单个空格隔开。(1≤R,C≤1001≤R,C≤1001≤R,C≤100)

接下来 RRR 行,每行 CCC 个字符,描述牧场地图。字符只有#.两种。

输出格式

输出一个整数,表示草丛数。

样例输入

5 6
.#....
..#...
..#..#
...##.
.#....

样例输出

5

解题

思路分析

  1. 本题主要用到深度优先搜索(Depth-First-Search)算法
  2. 首先用二维数组生成牧场地图
    • 此处Python应注意每行用list将将字符串分割成字符型列表,因为Python的字符串无法直接修改字符
  3. 遍历牧场,按条件进入深搜(ls[i][j] == '#'
    • 每次进入次数+1(包括相连的视为一片草)
  4. 每深搜到一个符合条件的字符,就将其变成一个.,然后判断其右侧或下边是否还有相连的#
    • 如果有,继续对相连的草地执行第三步操作操作。

dfs代码

def dfs(x, y):ls[x][y] = '.'if x != m - 1 and ls[x + 1][y] == '#':dfs(x + 1, y)if y != n - 1 and ls[x][y + 1] == '#':dfs(x, y + 1)

完整代码实现

ls = []
m, n = map(int, input().split())
for i in range(m):ls.append(list(input()))
c = 0def dfs(x, y):ls[x][y] = '.'if x != m - 1 and ls[x + 1][y] == '#':dfs(x + 1, y)if y != n - 1 and ls[x][y + 1] == '#':dfs(x, y + 1)for i in range(m):for j in range(n):if ls[i][j] == '#':dfs(i, j)c += 1
print(c)

最好的草 计蒜客 Python相关推荐

  1. 计算二进制补码 计蒜客 Python

    题目 题目来源于计蒜客输出二进制补码 题目描述 蒜头君有一个 int 的整数,输出它的 32 位二进制补码. 输入格式 一个整型整数. 输出格式 输出一行,即该整数的补码表示. 样例输入 7 样例输出 ...

  2. 计蒜客python答案Top50

    新手小白入门刷题学习,前50道题目,巩固基础,有些题目的解答并不是最简单而又高效,纯属暴力破解,希望各位大佬多多指教! 计蒜客官网: https://www.jisuanke.com T1001 计算 ...

  3. 区间内的真素数 计蒜客 Python

    题目 题目描述 蒜头君请你帮忙找出正整数 MMM 和 NNN 之间(NNN 不小于 MMM)的所有真素数. 真素数的定义:如果一个正整数 PPP 为素数,且其反序也为素数,那么 PPP 就为真素数. ...

  4. 计蒜客python刷题笔记

    1.计算A+B A,B= map(int, input().split()) C=int(A+B) print(C) 这里面输入必须同时输入两个数.用空格隔开,所以用到了map函数,第一个参数控制格式 ...

  5. 计蒜客 Python练习

    本文为了记录 学习Python3 所写  写的都是 语法训练题  记录自己学习的过程 题目是让你求一个斐波那契数列的第n项  然后我用了一个函数来计算这个东西 1:没有分号 2:各种段开头需要冒号 3 ...

  6. 坑!计蒜客——乳草的侵占

    计蒜客--乳草的侵占(BFS) BFS一直写不会,可能是多加了个队列,写起来不是太容易.不过最近还是稍微入门了BFS,跟DFS差别不太大,还是由三个部分组成--出口.标记.枚举. DFS的主要的思想就 ...

  7. 计蒜客难题题库之一 泥塑课 python解答

    计蒜客挑战难题之一 泥塑课 python解答 题目: 小米是一个幼儿园老师,每学期的泥塑课上,她都会给每个学生发不超过250立方厘米的等量橡皮泥,教大家做泥塑.在上课过程中,她发现每个班都恰好有一个小 ...

  8. 计蒜客难题题库之二 奇怪的国家 python解答

    计蒜客挑战难题之二 奇怪的国家 python解答 题目: 有一个奇怪的国家,里面的国民对于事情的态度永远只有两面.当两个人遇到一起讨论一个事情的时候--两个持赞同观点的人遇到一起后会对这个事情都继续赞 ...

  9. 计蒜客2020蓝桥杯大学A组模拟赛题解

    计蒜客2020蓝桥杯大学A组模拟赛题解 蓝桥杯的话,去年拿了C++组的国二.今年报名了新成立的Python组,不知道能不能摸到国一的鱼 模拟赛链接如下: https://www.jisuanke.co ...

最新文章

  1. 模拟游客一天的生活与旅游java程序代写源码
  2. Unix/Linux常用命令及配置
  3. find命令以及管道的简单使用技巧
  4. 为什么一个程序申请的内存有限制_为什么要做自己的小程序商城,做一个要多久?...
  5. 10年前用10万元投资腾讯,现在能实现财务自由吗?
  6. mysql 配置自动截断_MySql超长自动截断实例详解
  7. AI实战 | Tensorflow自定义数据集和迁移学习(附代码下载)
  8. 惊!字节实习生竟干这事到凌晨三点
  9. python与机器学习(七)下——torchvision预训练模型测试真实图像分类
  10. oracle日期的sql,Oracle中一些和日期有关的SQL查询
  11. gcc和g++的区别 (很详细的描述)
  12. java入门第五步之数据库项目实战
  13. 配置activity-alias别名,更改app图标和名字
  14. Make sure that libnvrtc-builtins.so.11.1 is installed correctly.
  15. 信息终端安全是指办公和生产用计算机,从办公终端安全角度考虑,以下哪个是正确的()...
  16. 路由器,交换机和猫的区别
  17. Failed to load project configuration: cannot parse file xxx Message: 前言中不允许有内容。
  18. 恒讯科技讲解:量子云计算是什么?
  19. 【3】现代计算机图形学(正交投影,透视投影,MVP变换)
  20. DeepLab InvalidArgumentError NodeDef mentions attr dilations not in Op name=Conv2D

热门文章

  1. 【IPTV】IPTV特点
  2. 彻底关闭Antimalware Service Executable 彻底关闭 Microsoft Defender Antivirus Service
  3. 1763. 传球游戏
  4. ui svg 转纯svg_带有SVG和边框图像的高科技UI元素
  5. Read和ReadLine及数组的输入方法示例
  6. 大数据计算框架期末复习
  7. 22年低分上岸成都电子科技大学计算机经验贴
  8. 加拿大西蒙弗雷泽大学裴健教授当选ACM SIGKDD新一届主席
  9. few-shot learning——图神经网络专题
  10. 献给初学者:谈谈如何学习Linux操作系统