CCF CSP认证-202305

1.重复局面:

题目背景

国际象棋在对局时,同一局面连续或间断出现3次或3次以上,可由任意一方提出和棋。

问题描述

国际象棋每一个局面可以用大小为 8×8 的字符数组来表示,其中每一位对应棋盘上的一个格子。六种棋子王、后、车、象、马、兵分别用字母 kqrbnp 表示,其中大写字母对应白方、小写字母对应黑方。棋盘上无棋子处用字符 * 表示。两个字符数组的每一位均相同则说明对应同一局面。

现已按上述方式整理好了每步棋后的局面,试统计每个局面分别是第几次出现。

核心思想:其实就是给了许多个字符串矩阵,让你判断它以前有没有出现过,我们读入的时候可以把矩阵转换成为一个字符串,然后用map容器把字符串存起来就可以得到答案。

#include
#include
using namespace std;
map mp1;
string c[100010];
int main()
{
	int t;
	scanf("%d",&t);
	for(int i=1;i<=t;i++)
	{
		string s1="";
		for(int i=1;i<=8;i++)
		{
			string s2="";
			cin>>s2;
			s1+=s2;
		}
		mp1[s1]++;
	    if(i!=t)cout<

你可能感兴趣的:(CCF-CSP认证,数学建模,算法,c++)