高端网站定制平台,龙岗区网站建设哪个公司好,电子商务网站建设需求说明书,电商网站开发的底层架构题目描述
Berland的总统办公室内设有多个办公桌#xff0c;其中总统和其属下各自拥有独特颜色的办公桌。总统希望统计哪些属下的办公桌紧邻他的办公桌#xff0c;但不记得确切的数量。
输入描述#xff1a;
第一行包含三个值 n, m, c#xff0c;分别是办公室的长度、宽度…
题目描述
Berland的总统办公室内设有多个办公桌其中总统和其属下各自拥有独特颜色的办公桌。总统希望统计哪些属下的办公桌紧邻他的办公桌但不记得确切的数量。
输入描述
第一行包含三个值 n, m, c分别是办公室的长度、宽度以及总统办公桌的颜色。接下来的 n 行每行包含一个长度为 m 的字符串描述办公室平面图 用大写拉丁字母表示桌子的颜色。用字符 . 表示空地。
输出描述
输出一个整数表示紧邻总统办公桌的属下人数即不同颜色的办公桌数量。
示例
输入
3 4 R
G.B.
.RR.
TTT.输出
2输入
3 3 Z
.H.
..Z输出
0解题思路
读取输入数据 首先读取办公室的平面图和总统办公桌的颜色。记录总统办公桌位置 遍历整个平面图将所有总统办公桌的位置存储在集合中。查找邻居桌子 遍历每个总统桌子的位置检查上下左右是否存在其他颜色的桌子并记录这些颜色。计算结果 输出记录的邻居颜色集合的大小即为紧邻总统桌子的属下数量。
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代码解析
输入处理 input().split() 将 n, m, c 解析为整数和字符strip() 去除多余空格。记录位置 利用 set 数据结构存储总统办公桌的位置避免重复。邻居查找 遍历总统桌子的位置检查上下左右邻居是否为其他颜色。结果输出 使用 len() 输出邻居颜色集合的大小。
总结
本题主要考察二维数组的遍历和集合的使用。通过合理的数据结构如 set我们可以高效地完成邻居颜色的统计。
欢迎大家留言讨论