求助最后一个点没过,其他是对的
查看原帖
求助最后一个点没过,其他是对的
1526749
linda_xhy楼主2024/10/30 23:43
#include <iostream>
using namespace std;
bool work1(char a[][12], char b[][12], int n) { // 转90度 
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++) {
			if (a[i][j] != b[j][n - i + 1]) return false;
		}
	return true;
}
bool work2(char a[][12], char b[][12], int n) { // 转180度 
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (a[i][j] != b[n - i + 1][j]) return false; 
		}
	}
	return true;
}
bool work3(char a[][12], char b[][12], int n) { // 转270度 
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (a[i][j] != b[j][i]) return false;
		}
	}
	return true;
}
bool work4(char a[][12], char b[][12], int n) { // 反射 
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (a[i][j] != b[i][n - j + 1]) return false;
		}
	}
	return true;
}
bool work5(char a[][12], char b[][12], int n) { // 组合 
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n / 2; j++) {
			swap(a[i][n - j + 1], a[i][j]);
		}
	}
	if (work1(a, b, n)) return true;
	else if (work2(a, b, n)) return true;
	else if (work3(a, b, n)) return true;
	return false;
}
bool work6(char a[][12], char b[][12], int n) { // 不改变 
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (a[i][j] != b[i][j]) return false;
		}
	}
	return true;
}
int main() {
	int n;
	cin >> n;
	char a1[12][12], a2[12][12];
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			cin >> a1[i][j];
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			cin >> a2[i][j];
	if (work1(a1, a2, n)) {
		cout << 1;
		return 0;
	} 
	if (work2(a1, a2, n)) {
		cout << 2;
		return 0;
	}
	if (work3(a1, a2, n)) {
		cout << 3;
		return 0;
	}
	if (work4(a1, a2, n)) {
		cout << 4;
		return 0;
	}
	if (work5(a1, a2, n)) {
		cout << 5;
		return 0;
	}
	if (work6(a1, a2, n)) {
		cout << 6;
		return 0;
	}
	cout << 7;
	return 0;
}
2024/10/30 23:43
加载中...