【需要打开多少监视器】Python 实现

1.题目

某长方形停车场,每个车位上方都有对应 监控器Q,当且仅当在当前车位或者前后左右四个方向任意一个车位范围停车时,监控器才需要打开:
给出某一时刻停车场的停车分布,请统计最少需要打开多少个监控器

输入描述:
第一行输入m,n表示长宽,满足1 < m,n <= 20;
后面输入m行,每行有n个0或1的整数,整数间使用一个空格隔开,表示该行已停车情况,其中0表示空位,1表示已停:

输出描述:最少需要打开监控器的数量

示例1:
输入

3 3
0 0 0
0 1 0
0 0 0
输出
5

说明:中间1的位置上需要打开 监视器Q,且其上下左右皆需要打开监视器,共5个。

2.解题思路

这个问题要求你统计在一个长方形停车场中,最少需要打开多少个监控器,以便覆盖所有已停车位的情况。监控器只需要在当前车位或者其上下左右四个相邻的车位范围内打开。

解题思路如下:

  1. 遍历整个停车场的每个位置,当你找到一个已停车(值为1)的位置时,表示需要放置一个监控器。

  2. 一旦找到一个已停车的位置,你需要确保其上下左右四个相邻的位置也被覆盖。所以,你需要标记这些相邻位置为已覆盖。

  3. 继续遍历停车场,如果你找到一个已停车的位置,但它已经被之前的监控器覆盖了,那么无需再放置一个监控器。

  4. 统计放置的监控器数量。

3.代码实现

def min_cameras(m, n, parking_lot):def is_valid(x, y):return 0 <= x < m and 0 <= y < n# 定义上下左右四个方向的偏移量directions = [(0, 0), (0, 1), (1, 0), (0, -1), (-1, 0)]cameras = [[0] * n for _ in range(m)]  # 创建一个二维数组来标记放置监控器的位置count = 0  # 统计监控器数量for i in range(m):for j in range(n):if parking_lot[i][j] == 1:for dx, dy in directions:nx, ny = i + dx, j + dyif is_valid(nx, ny):cameras[nx][ny] = 1  # 标记相邻位置为已覆盖# 统计放置的监控器数量for i in range(m):for j in range(n):if cameras[i][j] == 1:count += 1return count# 读取输入
m, n = map(int, input().split())
parking_lot = []
for _ in range(m):row = list(map(int, input().split()))parking_lot.append(row)result = min_cameras(m, n, parking_lot)
print(result)

这段代码首先遍历停车场中的每个位置,找到已停车的位置,并标记其上下左右相邻的位置为已覆盖。然后,统计放置的监控器数量。最后,输出结果表示最少需要打开多少个监控器来覆盖所有已停车位的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/70490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶中间件

自动驾驶中间件 1. 什么是中间件2. 中间件的分类3. 自动驾驶为什么需要中间件4. 通信中间件 Reference&#xff1a; 自动驾驶中间件&#xff1a;量产落地的关键技术通俗易懂的告诉你什么是中间件 对于初入自动驾驶行业的人来说&#xff0c;各色各样的新型传感器、线控系统、芯…

QT 初识多线程

1.QThread线程基础 QThread是Qt线程中有一个公共的抽象类&#xff0c;所有的线程类都是从QThread抽象类中派生的&#xff0c;需要实现QThread中的虚函数run(),通过start()函数来调用run函数。 void run&#xff08;&#xff09;函数是线程体函数&#xff0c;用于定义线程的功能…

第 2 章 线性表 (线性表的单链表存储结构实现)

1. 背景说明 2. 示例代码 1) status.h /* DataStructure 预定义常量和类型头文件 */#ifndef STATUS_H #define STATUS_H/* 函数结果状态码 */ #define TRUE 1 /* 返回值为真 */ #define FALSE 0 /* 返回值为假 */ #define RET_OK 0 /* 返回值正确 */ #d…

软件架构设计(十) 架构评估(复审)-方法论

我们上一节讲到了为什么么要进行架构的评估, 以及架构评估有哪些质量属性,本节正式来学习架构评估的一些方法论。 再讲到架构评估之前,还需要了解几个概念,也就是风险点,非风险点,敏感点,权衡点等。 风险点:系统架构风险是指架构设计中潜在的,存在问题的架构策略所带…

计算机网络的故事——HTTP首部

HTTP首部 在HTTP协议通信交互中使用的首部字段。不限于RFC2616中定义的47种首部字段&#xff0c;还有Cookie、setCookie和Content-Disposition等 HTTP 首部字段将定义成缓存代理和非缓存代理的行为&#xff0c;分成 2 种类型。端到端首部和逐跳首部

关于vscode的GitLens插件里的FILE HISTORY理解

最近在用vscode的GitLens插件开发项目遇到这个疑问&#xff0c;先看图&#xff1a; 每当我点击FILE HISTORY 一个commit时&#xff0c;正常来说显示器会自动将点击的提交版本和它上一个提交版本进行比较&#xff0c;如果单纯这么理解的话就错了&#xff0c;因为GitLens的File …

企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&am…

spring boot + minio 8.5.4 遇到 okhttp3包冲突

解决方案&#xff1a; 在你spring boot项目的根pom上指定okhttp3版本, <properties><okhttp3.version>4.8.1 </okhttp3.version></properties> 这样其他的模块引入minio就不会报错了 <dependencies><!--minio oss服务--><dependenc…

【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】HAL源码分析

一、环境介绍 RK3588主板搭载Android12操作系统,内核是Linux5.10,使用ST的六轴传感器LSM6DSR芯片。 二、芯片介绍 LSM6DSR是一款加速度和角速度(陀螺仪)六轴传感器,还内置了一个温度传感器。该芯片可以选择I2C,SPI通讯,还有可编程终端,可以后置摄像头等设备,功能是很…

第二证券:为什么a股放开做空机制?

对于很多一般出资者来说&#xff0c;做空股票是一件十分复杂和困难的工作&#xff0c;可是对于专业的出资者和组织来说&#xff0c;这供给了一个愈加自由的商场买卖环境。那么&#xff0c;为什么A股放开做空机制呢&#xff1f;我们从多个视点来分析&#xff1a; 视点一&#x…

合宙Air724UG LuatOS-Air LVGL API控件--容器 (Container)

容器 (Container) 容器是 lvgl 相当重要的一个控件了&#xff0c;可以设置布局&#xff0c;容器的大小也会自动进行调整&#xff0c;利用容器可以创建出自适应成都很高的界面布局。 代码示例 – 创建容器 cont lvgl.cont_create(lvgl.scr_act(), nil) lvgl.obj_set_auto_re…

kubernetes 集群安装加载 br_netfilter 模块

kubernetes 集群安装加载 br_netfilter 模块 Linux 系统默认是禁止数据包转发功能。 加载系统参数&#xff1a; # sysctl -p /etc/sysctl.d/k8s.conf 错误提示&#xff1a; sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or director…

echo、print_r、print、var_dump 、die

die()和exit()函数都有终止线程的作用 是php断点调试需要使用的最主要的函数 die()函数一般与“or”一并使用&#xff0c;写作“or die()” var_dump()和print_r() var_dump() 显示关于一个或多个表达式的结构信息&#xff0c;包括表达式的类型与值。数组将递归展开值&#…

【C# Programming】类、构造器、静态成员

一、类 1、类的概念 类是现实世界概念的抽象&#xff1a;封装、继承、多态数据成员&#xff1a; 类中存储数据的变量成员方法&#xff1a; 类中操纵数据成员的函数称为成员方法对象&#xff1a;类的实例类定义 class X {…} var instance new X(…); 2、实例字段 C#中…

图文版:以太网二层接口类型(含配套习题)

常见的以太网二层接口类型包括以下三种&#xff1a; 一、Access接口 access链路类型端口&#xff0c;一种交换机的主干道模式&#xff0c;2台交换机的2个端口之间是否能够建立干道连接&#xff0c;取决于这2个端口模式的组合。 Access端口在收到以太网帧后打开VLAN标签&#…

linux查找目录

要在Linux中查找目录&#xff0c;可以使用find命令。下面是查询目录的几个示例&#xff1a; 1,查找当前目录下所有子目录&#xff1a; find . -type d 2,在指定路径下查找目录&#xff1a; find /path/to/directory -type d 3,查找以特定名称开头的目录&#xff1a; find . -t…

前端(十七)——gitee上开源一个移动端礼盒商城项目(前端+后台)

&#x1f917;博主&#xff1a;小猫娃来啦 &#x1f917;文章核心&#xff1a;gitee上开源一个移动端礼盒商城项目 文章目录 前言开源地址项目运行命令项目基本展示前端效果细节展示视频前端代码细节展示视频后台效果展示后台代码展示经典优势思维导图实现思路 前言 项目样式老…

vue 动态绑定ref 父组件获取自组件data数据

vue中用ref 可以引用元素或组件中的数据&#xff0c;静态绑定用法非常简单&#xff0c;例如&#xff1a;this.$refs["xxx"].func() 或this.$refs["xxx"].msg 父组件调用子组件中的方法或数据。 如果在父组件中用v-for循环渲染子组件&#xff0c;并且需…

富士康曲线救国,iPhone 15 Pro订单较上代有减少,iPhone 15增加

据外媒报道&#xff0c;苹果将于9月13日凌晨举行的秋季新品发布会上推出iPhone 15系列智能手机。然而&#xff0c;令人惊讶的是&#xff0c;这款备受期待的手机在8月份就已开始批量生产&#xff0c;以确保上市初期供应充足。 随着iPhone 15系列发布时间的临近&#xff0c;越来越…

centos7 安全加固

PS&#xff1a;之前在进行安全测试的时候&#xff0c;说是报告环境有漏洞&#xff0c;于是根据报告的漏洞来查找相应的解决方案&#xff0c;当然&#xff0c;现在centos已经停止维护了&#xff0c;但是估计还是有不少使用的人&#xff0c;把他拿出来给大家一起分享一下解决方案…