思路
思路其实很简单,第一题还是很容易的。
考虑用dict作为棋局出现次数的统计,list作为出现次数的记录。
棋盘记录
将输入的每盘棋局的8行字符串进行合并,形成一个长字符串,当作dict的key,然后再对其赋初始值1,表示这个棋局出现的次数。同时,也为list增加一个元素1,用来代表这次所输入的棋盘的出现次数。
局面重复查询
每合并掉8行字符串后,都对dict进行检查,查看是否有重复的key。有重复的key说明这个棋局已重复出现过了,则通过key索引,将其值+1,记录这个棋局目前为止总共出现的次数。同时,以当前所输入的棋局数为索引,通过给list索引赋值的方式,赋值当前所输入的这个棋盘是第几次出现。
最后遍历输出list。
# 202305-1 重复局面
# 接收第一个数据,表示有多少步
n = int(input())
s = {} # 字典dict
count = [] # 存放各个棋盘出现的次数
tempStr = ''
a = 0
for i in range(8 * n):
temp = input() # 读取输入行
tempStr += temp
if (i + 1) % 8 == 0:
count.append(1)
if tempStr in s:
s[tempStr] += 1
count[a] = s[tempStr]
else:
s[tempStr] = 1
tempStr = ''
a += 1
for i in count:
print(i)