#L16667. 重复局面
重复局面
Problem Description
题目描述
国际象棋对局中,同一局面连续或间断出现三次及以上时,任意一方可以提出和棋。
一个局面用 8×8 字符数组表示,每个字符对应棋盘上的一个格子。六种棋子王、后、车、象、马、兵分别用 k、q、r、b、n、p 表示;大写字母表示白方,小写字母表示黑方。空格用 * 表示。两个局面完全相同,当且仅当对应位置的 64 个字符全部相同。
现在给出每一步棋后整理得到的棋盘局面,请按出现顺序输出每个局面此前出现次数加一,也就是它是第几次出现。
:::align{center}
:::
输入格式
第一行是正整数 n,表示给出的局面数。
接下来有 8n 行,每 8 行描述一个局面。每行是一个长度恰为 8 的字符串,由 *、k、q、r、b、n、p 及其大写字母组成。
输出格式
输出 n 行。第 i 行是第 i 个局面在此前(含当前)出现的次数。
样例
样例 1
提示
数据范围: 1 ≤ n ≤ 100。
说明: 输入仅描述字符棋盘,不要求检查棋子的合法性,也不需要判断真实棋局是否可达。
比较局面时应比较全部 64 个位置;即使两个棋盘只差一个格子,也属于不同局面。
8
********
******pk
*****r*p
p*pQ****
********
**b*B*PP
****qP**
**R***K*
********
******pk
*****r*p
p*pQ****
*b******
****B*PP
****qP**
**R***K*
********
******pk
*****r*p
p*p*****
*b**Q***
****B*PP
****qP**
**R***K*
******k*
******p*
*****r*p
p*p*****
*b**Q***
****B*PP
****qP**
**R***K*
******k*
******p*
*****r*p
p*pQ****
*b******
****B*PP
****qP**
**R***K*
********
******pk
*****r*p
p*pQ****
*b******
****B*PP
****qP**
**R***K*
********
******pk
*****r*p
p*p*****
*b**Q***
****B*PP
****qP**
**R***K*
********
******pk
******rp
p*p*****
*b**Q***
****B*PP
****qP**
**R***K*
1
1
1
1
1
2
2
1