57分,求测试点是什么
查看原帖
57分,求测试点是什么
1354168
czq__楼主2024/7/26 08:12
#include<bits/stdc++.h>
using namespace std;
int main() {
	int n; cin >> n;
	char s[3][11][11];
	bool t1 = true, t2 = true;//t1判断是否相同,t2避免翻转后还需翻转
	string s1;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++) {
			cin >> s[0][i][j];
		}
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++) {
			cin >> s[1][i][j];
			if (s[0][i][j] != s[1][i][j]) t1 = false;//输入同时判断是否相同
		}
	if (t1) { s1 += "6"; cout << s1; return 0; }
a1:	int t = 3;
	//每次while旋转90度,共三次
	while (t--) {
		t1 = true;
		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++) {
				s[2][i][j] = s[0][n - j - 1][i];
			}
		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++) {
				s[0][i][j] = s[2][i][j];
				if (s[0][i][j] != s[1][i][j]) t1 = false;
			}
		if (t1) { s1 += 3 - t + '0'; cout << s1; return 0; }
	}	if (!t2) { cout << "7"; return 0; }
	//再旋转一次,让其恢复到未旋转的状态
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++) {
			s[2][i][j] = s[0][n - j - 1][i];
		}
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++) {
			s[0][i][j] = s[2][i][j];
			if (s[0][i][j] != s[1][i][j]) t1 = false;
		}
	t1 = true;
	//翻转
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++) {
			s[2][i][j] = s[0][i][n - j - 1];
		}
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++) {
			s[0][i][j] = s[2][i][j];
			if (s[0][i][j] != s[1][i][j]) t1 = false;
		}
	if (t1) { cout << "4"; return 0; }
	//组合
	else if (t2) { s1 += "5"; t2 = false; goto a1; }
	cout << "7";
}
2024/7/26 08:12
加载中...