恶心的模拟(bushi)
C++ 代码
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
typedef long long LL;
const int N = 15;
int n;
char g[N][N], tmp[N][N];
char t[N][N];
bool check( char g[N][N] , char t[N][N] ) {
for ( int i = 0; i <n; i++ ) {
if( strcmp(g[i], t[i]) != 0 ) return false;
}
return true;
}
void copy( char g[N][N], char tmp[N][N] ) {
for ( int i = 0; i < n; i++ ) {
strcpy(tmp[i], g[i]);
}
}
bool ch1( char g[N][N], char tmp[N][N] ) {
for ( int i =0; i < n; i++ ) {
for ( int j = 0; j < n; j++ ) {
tmp[i][j] = g[n - j - 1][i];
}
}
if( check(tmp, t)) return true;
return false;
}
bool ch2( char g[N][N], char tmp[N][N] ) {
for ( int i = 0; i < n; i++ ) {
for ( int j = 0; j < n; j++ ) {
tmp[i][j] = g[n - i - 1][n - j - 1];
}
}
if( check(tmp, t)) return true;
return false;
}
bool ch3( char g[N][N], char tmp[N][N] ) {
for ( int i = 0; i < n; i++ ) {
for ( int j = 0; j < n; j++ ) {
tmp[i][j] = g[j][n-i-1];
}
}
if( check(tmp, t)) return true;
return false;
}
bool ch4( char g[N][N], char tmp[N][N] ) {
for ( int i = 0; i < n; i++ ) {
for ( int j = 0; j < n; j++ ) {
tmp[i][j] = g[i][n-j-1];
}
}
if( check(tmp, t)) return true;
return false;
}
bool ch5( char g[N][N], char tmp[N][N] ) {
ch4(g, tmp);
char s[N][N];
copy(tmp, s);
for ( int i = 1; i <= 3; i++ ) {
switch (i)
{
case 1:
if( ch1(tmp, s) ) return true;
copy(tmp, s);
break;
case 2:
if( ch2(tmp, s) ) return true;
copy(tmp, s);
break;
default:
if( ch3(tmp, s) ) return true;
copy(tmp, s);
break;
}
}
return false;
}
bool ch6( char tmp[N][N] ) {
if( check(tmp, t)) return true;
return false;
}
int main( ) {
scanf("%d", &n);
for ( int i = 0; i < n; i++ ) cin >> g[i];
copy(g,tmp);
for ( int i = 0; i < n; i++ ) cin >> t[i];
int idx = 0;
for ( int i = 1; i <= 6; i++ ) {
switch (i)
{
case 1:
if(ch1(g,tmp)) {
idx = 1;
cout << idx;
return 0;
}
copy(g, tmp);
break;
case 2:
if(ch2(g,tmp)) {
idx = 2;
cout << idx;
return 0;
}
copy(g, tmp);
break;
case 3:
if( ch3(g,tmp) ) {
idx = 3;
cout << idx;
return 0;
}
copy(g, tmp);
break;
case 4:
if( ch4(g,tmp)) {
idx = 4;
cout << idx;
return 0;
}
copy(g, tmp);
break;
case 5:
if( ch5(g, tmp)) {
idx = 5;
cout << idx;
return 0;
}
copy(g, tmp);
default:
if( ch6(tmp) ) {
idx = 6;
cout << idx;
return 0;
}
break;
}
}
cout << 7;
return 0;
}
看了y总代码知道自己写的多丑陋了。。