86分,求大佬看看为什么第一测试点会MLE
查看原帖
86分,求大佬看看为什么第一测试点会MLE
792519
Huuush楼主2023/5/14 20:54
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<deque>
#include<stack>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<queue>
#include<vector>
using namespace std;
typedef long long ll;
char g[11][11], g_[11][11];
int n;
const int N = 11;
int check(char g[][N], char g_[][N]) {
	//1
	int mark = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (g[i][j] == g_[j][n + 1 - i]) {
				continue;
			}
			else {
				mark = 0;
				break;
			}
		}
	}
	if (mark) {
		return 1;
	}
	//2
	mark = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (g[i][j] == g_[n + 1 - i][n + 1 - j]) {
				continue;
			}
			else {
				mark = 0;
				break;
			}
		}
	}
	if (mark) {
		return 2;
	}
	//3
	mark = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (g_[i][j] == g[j][n + 1 - i]) {
				continue;
			}
			else {
				mark = 0;
				break;
			}
		}
	}
	if (mark) {
		return 3;
	}
	//4
	mark = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (g[i][j] == g_[i][n + 1 - j]) {
				continue;
			}
			else {
				mark = 0;
				break;
			}
		}
	}
	if (mark) {
		return 4;
	}
	//5
	char t[11][11];
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			t[i][j] = g[i][n + 1 - j];
		}
	}
	if (check(t, g_) <= 3) {
		return 5;
	}
	//6
	mark = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (g[i][j] == g_[i][j]) {
				continue;
			}
			else {
				mark = 0;
				break;
			}
		}
	}
	if (mark) {
		return 6;
	}
	return 7;
}
int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			cin >> g[i][j];
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			cin >> g_[i][j];
		}
	}
	printf("%d", check(g, g_));
}
2023/5/14 20:54
加载中...