【输入格式】 从标准输入读入数据。 输入的第一行包含一个正整数 n,表示这盘棋总共有 n 步。 接下来 8 × n 行,依次输入第 1 到第 n 步棋后的局面。具体来说每行包含一个长度 为 8 的字符串,每 8 行字符串共 64 个字符对应一个局面。 【输出格式】 输出到标准输出。 输出共 n 行,每行一个整数,表示该局面是第几次出现。
时间: 2024-02-15 19:02:27 浏览: 62
c++课件第十一章C++输入输出流共11页.pdf.zip
以下是Python的代码实现:
```python
n = int(input()) # 读入棋的总步数
board_list = [] # 存储每一步棋的局面
for i in range(n):
board = [] # 存储当前棋局的二维列表
for j in range(8):
row = input().strip() # 读入一行棋局字符串
board.append(list(row)) # 将字符串转换为列表,存入board中
board_list.append(board) # 将当前棋局存入board_list中
pos_dict = {} # 存储每个局面出现的次数,以及第一次出现的步数
for i in range(n):
if str(board_list[i]) in pos_dict: # 如果当前局面已经出现过
pos_dict[str(board_list[i])][0] += 1 # 对应的出现次数加1
else: # 如果当前局面是第一次出现
pos_dict[str(board_list[i])] = [1, i+1] # 记录出现次数为1,第一次出现的步数为i+1
# 输出每个局面出现的次数
for i in range(n):
print(pos_dict[str(board_list[i])][0])
```
思路:首先读入棋的总步数和每一步的棋局,将每一步棋的局面存入一个二维列表中。然后遍历每一个局面,使用一个字典pos_dict来存储每个局面出现的次数,以及第一次出现的步数。最后输出每个局面出现的次数即可。注意,由于Python中列表是可变对象,所以在将每一步棋的局面存入字典pos_dict时,需要将列表转换为字符串再存储。
阅读全文