2022年4月23日第十三届省赛蓝桥杯真题答案_python_第五题_统计未被污染的海域

2023-11-09

第五题如约而至哈,和第六题差不多(但比第六题简单)。好!上题目:

题目:

有一片海域划分为N*M个方格,其中有些海域已被污染(用0表示),有些海域没被污染(用1表示)。请问这片N*M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该块海域上下左右被已污染的海域包围,且N*M以外的海域都为已被污染的海域)

例如:N=4,M=5,4*5的海域中,已被污染海域和没被污染的海域如下图:

输入描述:

第一行输入两个正整数N和M,N表示矩阵方格的行,M表示矩阵方格的列,N和M之间以一个英文逗号隔开

第二行开始输入N行,每行M个数字(数字只能为1或者0,1表示没被污染的海域,0表示已被污染的海域)      

输出描述:

输出一个整数,表示N*M的海域中有几块是没被污染的独立海域

输入样例:

4,5                                                                                                                                                     

1,1,0,0,0                                                                                                                                             

1,0,1,0,0                                                                                                                                             

1,0,0,0,0                                                                                                                                             

1,1,0,1,1

输出样例:3

这题很简单,难就难在你考虑的方向。如果你看一块海。你就上下左右看一圈,看一块海,你就上下左右看一圈。我可以告诉你的是,这样行!但是麻烦死了!因为在拐角处你的电脑会算作这是两块海,有可能一块海还会被算n多次

那么我们怎么思考呢?可以采用一种“污海”的思路:找到一块海,在它的下面一直找,左面一直找,找到一个“污”一个(即把1变成0),这样便能找到全部的未被污染的海域还能既不重复也不遗漏了!有人说那右边的和上边的怎么办,那要怪你没考虑周全,你如果一块海在上边或右边有海,那么在遍历它上面或右边时不早把这块海遍历“污染”了吗?

好,思路就是这样,概括一下就是:一、找左边   二、找下边    三、汇合(拐角成为一块海域)  四、打印

上代码:


def find_right(j,g,M):  # 右边找找(M后期赋值 列的意思)
    global s
    d=0  # 纯净海域数
    while g<M:  # 注意不要超过遍历范围
        if s[j][g]==1:  # 判断是否没被污染
            s[j][g]=0  # 把海污染了
            g+=1  # 往右一块
            d+=1  # 纯净海域数+1
        else:
            break  # 不是就退出
    if d !=0:  # 如果有纯净海域(不管多少,有就行)
        return 1
    else:
        return 0
 
def find_down(j,g,N):  # 下面找找,和右边方法一模一样(N后期赋值 行的意思)
    global s
    d=0
    while j<N:
        if s[j][g]==1:
            s[j][g]=0
            j+=1  # 往下一块
            d+=1
        else:
            break
    if d !=0:
        return 1
    else:
        return 0
n=input()  # 输入行和列
N=int(n[0])  # 行
M=int(n[2])  # 列(去掉逗号 它算第三个)
s=[]  # 总体大地图
z=0  # 纯净海域数(未被加工 拐角处会算两个)
y=0  # 拐角数(把z减掉y就剩下最终结果了)
for i in range(N):  # 搞N个输入框 达到N行的效果
    a=list(eval(input()))  # 把输入结果转成列表
    s.append(a)  # 把a这个小地图放到s这个大地图里
print(s)

for j in range(N):  # 行索引号
    for g in range(M):  # 列索引号
        if s[j][g]==1:  # 开始判断拐角
            if ((j<N-1 and s[j+1][g]==1) or (j>0 and s[j-1][g]==1)) and ((g<M-1 and s[j][g+1]==1) or (g>0 and s[j][g-1]==1)):  
#  既满足下边有或者上边有 还满足 右边有或者左边有 
                y+=1  # 拐角数+1

for j in range(N):
    for g in range(M):
        if s[j][g]==1:
            if g<M-1 and s[j][g+1]==1:  # 如果右边有
                l=find_right(j,g,M)  # 左找找
            elif j<N-1 and s[j+1][g]==1:  # 如果下边有
                e=find_down(j+1,g,N)  # 下找找
            z+=1  # 最终不管结果如何 满足s[j][g]=1的就都应该把纯净海域数+1
print(z-y)  # 打印最终结果

好啦,今天的代码就是这些啦,有需要的尽管拿走,有建议的尽管提,有求必应、有问必答。谢谢几位小伙伴的提醒,欢迎三连(点赞、转发、收藏),嘿嘿!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022年4月23日第十三届省赛蓝桥杯真题答案_python_第五题_统计未被污染的海域 的相关文章

随机推荐

  • C语言函数大全--h开头的函数

    h开头的函数或宏 1 hypot hypotf hypotl 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 HUGE VAL HUGE VALF HUGE VALL 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 ha
  • linux安装gitlab并修改gitlab默认端口号

    安装系统 centos 6 5 官网安装地址 https about gitlab com install centos 6 可以先根据官网安装步骤进行安装 分别执行以下命令 1 打开http访问和ssh访问 sudo yum instal
  • Premiere Pro 2022

    第1章 视频编辑的基础知识 1 1 视频编辑术语 帧 视频的基础单位 可以理解为一张静态图片就是一帧 关键帧 是素材中的特定帧 标记为进行特殊的编辑或其他操作 以便控制完成动画的流 回放或其他特性 帧速率 代表每秒播放帧的数量 单位是每秒多
  • 机器学习、计算机视觉和深度学习

    机器学习 计算机视觉和深度学习 1 什么是机器学习 2 机器学习的类型 3 什么是计算机视觉 4 计算机视觉的机器学习应用 5 总结 参考 这篇博客将简要介绍 机器学习和用于计算机视觉的机器学习 想象一下 你可以使用人脸检测算法在图像或视频
  • 为 Prometheus Node Exporter 加上认证

    这篇文章主要是为了庆祝 Node Exporter 终于迎来了 v1 0 0 版本 Prometheus https prometheus io 是最早由 SoundCloud 开源的监控告警解决方案 并已经成长为继 Kubernetes
  • W2NER详解

    论文 https arxiv org pdf 2112 10070 pdf 代码 https github com ljynlp W2NER 文章目录 W2NER 介绍 模型架构 解码 源码介绍 数据输入格式 模型代码 参考资料 W2NER
  • jvm学习笔记_简单了解jvm

    一 基本概念 JVM 是可运行 Java 代码的假想计算机 包括一套字节码指令集 一组寄存器 一个栈 一个垃圾回收 堆 和 一个存储方法域 JVM 是运行在操作系统之上的 它与硬件没有直接的交互 二 运行过程 我们都知道java源文件 通过
  • java调用天地图api获取地理信息

    目录 1 注册账号登录 2 创建应用 获取key 3 查看接口示例 4 调用接口 4 1地理编码查询 4 2逆地理编码查询 天地图网址 天地图API 1 注册账号登录 2 创建应用 获取key 3 查看接口示例 4 调用接口 4 1地理编码
  • ctfshow web入门 web14

    根据题目提示查看源代码 发现编辑器路径 在url中输入 editor得到 点击文件上传发现文件空间可能有内容 editor attached file var www html nothinghere fl000g txt 访问 fl000
  • WSL2安装图形化界面

    文章目录 安装图形化界面 安装图形化界面 由于WSL2 Ubuntu默认不安装图形化界面 所以需手动安装 apt get install xfce4 使用windows powershell 查看WSL使用的IP地址 ipconfig 进入
  • vant list加载 empty空状态

  • 时序预测

    时序预测 MATLAB实现基于均方误差节点搜索优化BP神经网络的时间序列预测 多指标评价 多节点计算 目录 时序预测 MATLAB实现基于均方误差节点搜索优化BP神经网络的时间序列预测 多指标评价 多节点计算 预测效果 基本介绍 模型描述
  • python协程

    协程是实现并发编程的一种方式 一说并发 你肯定想到了多线程 多进程模型 没错 多线程 多进程 正是解决并发问题的经典模型之一 最初的互联网世界 多线程 多进程在服务器并发中 起到举足轻重的作用 随着互联网的快速发展 你逐渐遇到了 C10K
  • aviator表达式教程

    Aviator是一个轻量级 高性能的Java表达式执行引擎 它动态地将表达式编译成字节码并运行 特性包括 支持绝大多数运算操作符 包括算术操作符 关系运算符 逻辑操作符 位运算符 正则匹配操作符 三元表达式 支持操作符优先级和括号强制设定优
  • 微信小程序开发前端基础知识

    文章目录 一 简介 1 是什么 2 为什么 二 准备工作 1 环境准备 1 1 注册账号 1 2 获取APPID 1 3 开发工具 2 创建微信小程序 三 组件 1 目录及其作用介绍 2 页面操作 3 view 块级元素 4
  • Oracle Calendar

    声明 本文为转载 如果有侵犯知识版本 请通知本人 本人将即刻停止侵权行为 参考网址 http code geekinterview com oracle oracle calendar sql html 1 SELECT Initcap T
  • ROS:bag数据包内容提取——雷达点云数据和imu数据

    通常在利用ros采集传感器数据时 我们会得到一个包含多个传感器数据的bag数据包 下面将会介绍从bag数据包提取雷达点云数据和imu数据的方法 系统版本 Ubuntu20 04 ROS版本 Noetic 先觉条件 查看bag数据包中雷达点云
  • Python爬虫从入门到精通:(17)协程_Python涛哥

    协程 本节的概念需要重点理解和实际操作 我们需要安装asynico库 pip install asyncio 学习之前我们先来看下这段代码 import time def get request url print 正在请求的url url
  • nginx---四层七层代理

    理论部分 所谓四层负载均衡 也就是主要通过报文中的目标地址和端口 再加上负载均衡设备设置的服务器选择方式 决定最终选择的内部服务器 它一般走的是tcp udp协议 所谓七层负载均衡 也称为 内容交换 也就是主要通过报文中的真正有意义的应用层
  • 2022年4月23日第十三届省赛蓝桥杯真题答案_python_第五题_统计未被污染的海域

    第五题如约而至哈 和第六题差不多 但比第六题简单 好 上题目 题目 有一片海域划分为N M个方格 其中有些海域已被污染 用0表示 有些海域没被污染 用1表示 请问这片N M海域中有几块是没被污染的独立海域 没被污染的独立海域是指该块海域上下