n, m = map(int, input().split())

# 初始化一个字典,存储每种方块出现的次数
counts = {}

# 循环读入每一行,统计每种方块出现的次数
for i in range(n):
  line = input()
  for j in range(m):
    if line[j] in counts:
      counts[line[j]] += 1
    else:
      counts[line[j]] = 1

# 查找出现次数最多的方块
max_count = 0
max_block = None
for block, count in counts.items():
  if count > max_count:
    max_count = count
    max_block = block

# 输出结果
print(max_block)
print(max_count)

该程序的原理是:

  1. 读入 N 和 M,初始化一个字典 counts,存储每种方块出现的次数
  2. 循环读入每一行,统计每种方块出现的次数
  3. 查找出现次数最多的方块,并输出

以上为AI编写的方法1,下面是AI给出的方法2:


你可以使用 Python 的字典(dictionary)来解决这个问题。字典是一种数据类型,可以将键(key)和值(value)相关联。你可以把字典想象成一个“字母与方块数量”的映射关系。

首先,我们从输入读取城墙的维度 N 和 M,然后使用一个循环读取每一层的方块。在每一次读取方块时,我们都检查字典中是否已经存在这个字母。如果字典中没有该字母,我们就将它添加到字典中,并将它的方块数量设为1。如果字典中已经存在这个字母,我们就将它的方块数量加1。

接下来,我们要找出字母对应的方块数量最多的那个字母。我们可以使用 Python 的 max() 函数来找到字典中对应的最大值。最后,我们只需要输出这个字母和它的方块数量即可。

# 读取城墙的维度
n, m = map(int, input().split())

# 创建一个字典,用来存储字母与方块数量的映射关系
d = {}

# 读取每一层的方块
for i in range(n):
    # 读取一层的方块,并将它们存储在一个字符串
    s = input()
# 遍历字符串中的每一个字母
    for ch in s:
        # 如果该字母不在字典中,就将它添加到字典中,并将它的方块数量设为1
        if ch not in d:
            d[ch] = 1
        # 如果该字母已经在字典中,就将它的方块数量加1
        else:
            d[ch] += 1

#找到字母对应的方块数量最多的那个字母
max_ch = max(d, key=d.get)

#输出这个字母和它的方块数量
print(max_ch)
print(d[max_ch])

在上面的代码中,我们使用了字典 d 来存储字母与方块数量的映射关系。我们首先创建了一个空字典,然后在读取每一层的方块时,我们遍历这一层的所有方块,并检查字典中是否已经存在这个字母。如果该字母在字典中不存在,我们就将它添加到字典中,并将它的方块数量设为1;如果该字母已经存在,我们就将它的方块数量加1。

最后,我们使用 max() 函数找到字母对应的方块数量最多的那个字母,并输出这个字母和它的方块数量。在调用 max() 函数时,我们需要指定一个 key 函数,用来指定我们想要比较的是字母对应的方块

1 条评论

  • 1