【算法题解】B. President‘s Office - Python实现

题目描述

Berland的总统办公室内设有多个办公桌,其中总统和其属下各自拥有独特颜色的办公桌。总统希望统计哪些属下的办公桌紧邻他的办公桌,但不记得确切的数量。

输入描述:

  1. 第一行包含三个值 n, m, c,分别是办公室的长度、宽度以及总统办公桌的颜色。
  2. 接下来的 n 行每行包含一个长度为 m 的字符串,描述办公室平面图:
    • 用大写拉丁字母表示桌子的颜色。
    • 用字符 . 表示空地。

输出描述:

输出一个整数,表示紧邻总统办公桌的属下人数(即不同颜色的办公桌数量)。

示例:

输入:
3 4 R
G.B.
.RR.
TTT.
输出:
2
输入:
3 3 Z
.H.
..Z
输出:
0

解题思路

  1. 读取输入数据: 首先读取办公室的平面图和总统办公桌的颜色。
  2. 记录总统办公桌位置: 遍历整个平面图,将所有总统办公桌的位置存储在集合中。
  3. 查找邻居桌子: 遍历每个总统桌子的位置,检查上下左右是否存在其他颜色的桌子,并记录这些颜色。
  4. 计算结果: 输出记录的邻居颜色集合的大小,即为紧邻总统桌子的属下数量。

Python代码实现

以下是完整的Python实现代码:

def main():
    # 读取输入
    n, m, c = input().split()
    n, m = int(n), int(m)
    c = c.strip()

    plan = []
    president = set()

    # 输入平面图并记录总统桌子的位置
    for row in range(n):
        line = input().strip()
        plan.append(list(line))
        for col in range(m):
            if plan[row][col] == c:
                president.add((row, col))

    neighbors = set()

    # 遍历总统桌子的位置,查找邻居
    for currentRow, currentCol in president:
        if currentRow > 0:  # 上方
            temp = plan[currentRow - 1][currentCol]
            if temp != '.' and temp != c:
                neighbors.add(temp)
        if currentRow < n - 1:  # 下方
            temp = plan[currentRow + 1][currentCol]
            if temp != '.' and temp != c:
                neighbors.add(temp)
        if currentCol > 0:  # 左侧
            temp = plan[currentRow][currentCol - 1]
            if temp != '.' and temp != c:
                neighbors.add(temp)
        if currentCol < m - 1:  # 右侧
            temp = plan[currentRow][currentCol + 1]
            if temp != '.' and temp != c:
                neighbors.add(temp)

    # 输出邻居的数量
    print(len(neighbors))

if __name__ == "__main__":
    main()

示例运行

示例1:

输入:

3 4 R
G.B.
.RR.
TTT.

运行结果:

2
示例2:

输入:

3 3 Z
.H.
..Z

运行结果:

0

代码解析

  1. 输入处理: input().split()n, m, c 解析为整数和字符,strip() 去除多余空格。
  2. 记录位置: 利用 set 数据结构存储总统办公桌的位置,避免重复。
  3. 邻居查找: 遍历总统桌子的位置,检查上下左右邻居是否为其他颜色。
  4. 结果输出: 使用 len() 输出邻居颜色集合的大小。

总结

本题主要考察二维数组的遍历和集合的使用。通过合理的数据结构(如 set),我们可以高效地完成邻居颜色的统计。

欢迎大家留言讨论!😊


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】进度条

本文中&#xff0c;我们来写一个进度条。 本文大纲&#xff1a; 写一个命令行版的进度条。 1.回车换行 2.缓冲区问题&#xff08;本文不深究&#xff09; ​ 2.1测试代码 3.写一个什么样的进度条&#xff1f; ​ version1 ​ version2 回车换行 这俩不是一个概念&…

React引入Echart水球图

在搭建React项目时候&#xff0c;遇到了Echart官方文档中没有的水球图&#xff0c;此时该如何配置并将它显示到项目中呢&#xff1f; 目录 一、拓展网站 二、安装 三、React中引入 1、在components文件夹下新建一个组件 2、在组件中引入 3、使用水波球组件 一、拓展网站 …

mysql三种读取模式(普通、流式、游标)

在与MySQL数据库交互时&#xff0c;数据的读取方式有多种选择&#xff0c;包括流式读取、游标读取和普通读取。每种方式都有其独特的原理、优势和劣势。本文将对这三种读取方式进行详细介绍&#xff0c; 1. 普通读取 介绍 普通读取是指通过JDBC的Statement或PreparedStateme…

【畅购商城】微信支付之支付模块

目录 支付页面 接口 后端实现 前端实现​​​​​​​ ​​​​​​​支付页面 步骤一&#xff1a;创建 flow3.vue组件 步骤二&#xff1a;引入第三方资源&#xff08;js、css&#xff09; <script> import TopNav from ../components/TopNav import Footer from …

如何在 Ubuntu 上安装 PyTorch

简介 PyTorch 因其易用性、动态计算图和高效性而日益流行&#xff0c;成为实现深度学习模型的首选。如果你想探索这个工具并学习如何在 Ubuntu 上安装 PyTorch&#xff0c;本指南将对你有所帮助&#xff01; 在本教程中&#xff0c;我们将引导你完成在 Ubuntu 系统上使用 Pip…

如何设置Edge浏览器访问软件

使用Edge浏览器访问分销ERP A\V系列软件时会出现各种报错&#xff0c;如何设置Edge浏览器使其正常访问&#xff0c;请看下面的具体操作。 一、打开Edge浏览器&#xff0c;点击右上角的 设置及其他&#xff0c;如图&#xff1a; 二、在弹出界面中&#xff0c;点击 扩展&#xff…

ASP.NET Web应用程序出现Maximum request length exceeded报错

一、问题描述 在ASP.NET的web应用中&#xff0c;导出数据时出现500 - Internal server error.Maximum request length exceeded。 二、原因分析 这个错误通常出现在Web应用程序中&#xff0c;表示客户端发送的HTTP请求的长度超过了服务器配置的最大请求长度限制。这可能是因为…

springboot配置oracle+达梦数据库多数据源配置并动态切换

项目场景&#xff1a; 在工作中很多情况需要跨数据库进行数据操作,自己总结的经验希望对各位有所帮助 问题描述 总结了几个问题 1.识别不到mapper 2.识别不到xml 3.找不到数据源 原因分析&#xff1a; 1.配置文件编写导致识别mapper 2.配置类编写建的格式有问题 3.命名…

大数据技术-Hadoop(一)Hadoop集群的安装与配置

目录 一、准备工作 1、安装jdk&#xff08;每个节点都执行&#xff09; 2、修改主机配置 &#xff08;每个节点都执行&#xff09; 3、配置ssh无密登录 &#xff08;每个节点都执行&#xff09; 二、安装Hadoop&#xff08;每个节点都执行&#xff09; 三、集群启动配置&a…

【513. 找树左下角的值 中等】

题目&#xff1a; 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 提示: 二叉树的节点个数的范围是 …

EKF 自动匹配维度 MATLAB代码

该 M A T L A B MATLAB MATLAB代码实现了扩展卡尔曼滤波( E

【小程序】wxss与rpx单位以及全局样式和局部样式

目录 WXSS 1. 什么是 WXSS 2. WXSS 和 CSS 的关系 rpx 1. 什么是 rpx 尺寸单位 2. rpx 的实现原理 3. rpx 与 px 之间的单位换算* 样式导入 1. 什么是样式导入 2. import 的语法格式 全局样式和局部样式 1. 全局样式 2. 局部样式 WXSS 1. 什么是 WXSS WXSS (We…

RSA公钥私钥对在线生成工具--可生成pem,xml,raw等密钥格式

支持生成pkcs8,pkcs1,xml,raw,openssh格式的公钥私钥对&#xff0c;如下图所示&#xff1a; 具体请访问:在线RSA公钥私钥对生成器--生成导出pkcs8/pkcs1 pem证书,raw,xml,openssh等格式,并可指定密钥长度

VMware虚拟机与主机如何传文件

利用Windows局域网的文件夹共享功能。 然后&#xff0c;进入虚拟机文件夹&#xff0c;右键点击网络&#xff0c;映射网络编辑器 输入路径&#xff0c;按照提示登录即可访问

在 React 项目中安装和配置 Three.js

React 与 Three.js 的结合 &#xff1a;通过 React 管理组件化结构和应用逻辑&#xff0c;利用 Three.js 实现 3D 图形的渲染与交互。使用这种方法&#xff0c;我们可以在保持代码清晰和结构化的同时&#xff0c;实现令人惊叹的 3D 效果。 在本文中&#xff0c;我们将以一个简…

TCP 为什么采用三次握手和四次挥手以及 TCP 和 UDP 的区别

1. TCP 为什么采用三次握手和四次挥手 采用三次握手的原因&#xff1a; 确认双方的收发能力。第一次握手&#xff0c;客户端发送 SYN 报文&#xff0c;告诉服务器自身具备发送数据的能力&#xff0c;第二次握手&#xff0c;服务器回应 SYN ACK 报文&#xff0c;表名自己既能…

HarmonyOS NEXT 实战之元服务:静态案例效果---手机查看电量

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; import { authentication } …

机器学习之KNN算法预测数据和数据可视化

机器学习及KNN算法 目录 机器学习及KNN算法机器学习基本概念概念理解步骤为什么要学习机器学习需要准备的库 KNN算法概念算法导入常用距离公式算法优缺点优点&#xff1a;缺点︰ 数据可视化二维界面三维界面 KNeighborsClassifier 和KNeighborsRegressor理解查看KNeighborsRegr…

无需配置设备,借助GitHub快速编译项目并直接运行!

引言 你是否曾经有过类似的烦恼&#xff0c;发现了一个有趣的项目&#xff0c;想要测试一下&#xff0c;但是自己的设备没有对应的开发环境或者受制于自己的设备&#xff0c;不想或者不能去配置对应的开发环境&#xff0c;应该怎么办呢&#xff1f;这种情况下&#xff0c;其实…

【C++11】类型分类、引用折叠、完美转发

目录 一、类型分类 二、引用折叠 三、完美转发 一、类型分类 C11以后&#xff0c;进一步对类型进行了划分&#xff0c;右值被划分纯右值(pure value&#xff0c;简称prvalue)和将亡值 (expiring value&#xff0c;简称xvalue)。 纯右值是指那些字面值常量或求值结果相当于…