其实这道题还是比较简单的,主要就是分析清楚,然后将不同方式的方法理解清楚,用数组语言表示出来,再将不同方法存放在函数里,就完成了。代码如下。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char be[15][15],af[15][15],temp[15][15];
int case1(int n){
int i=0,j=0;
for (i=0;i<n;i++){
for (j=0;j<n;j++){
if (be[i][j]!=af[j][n-i-1]){
return 0;
}
}
}
return 1;
}
int case2(int n){
int i=0,j=0;
for (i=0;i<n;i++){
for (j=0;j<n;j++){
if (be[i][j]!=af[n-i-1][n-j-1]){
return 0;
}
}
}
return 1;
}
int case3(int n){
int i=0,j=0;
for (i=0;i<n;i++){
for (j=0;j<n;j++){
if (be[i][j]!=af[n-j-1][i]){
return 0;
}
}
}
return 1;
}
int case4(int n){
int i=0,j=0;
for (i=0;i<n;i++){
for (j=0;j<n;j++){
if (be[i][j]!=af[i][n-j-1]){
return 0;
}
}
}
return 1;
}
int case6(int n){
int i=0,j=0;
for (i=0;i<n;i++){
for (j=0;j<n;j++){
if (be[i][j]!=af[i][j]){
return 0;
}
}
}
return 1;
}
int case5(int n){
int i=0,j=0;
for (i=0;i<n;i++){
for (j=0;j<n;j++){
temp[i][n-j-1]=be[i][j];
}
}
for (i=0;i<n;i++){
for (j=0;j<n;j++){
be[i][j]=temp[i][j];
}
}
if (case1(n)||case2(n)||case3(n)){
return 1;
}
return 0;
}
int main (){
int n=0,i=0,j=0;
cin>>n;
for (i=0;i<n;i++){
for (j=0;j<n;j++){
cin>>be[i][j];
}
}
for (i=0;i<n;i++){
for (j=0;j<n;j++){
cin>>af[i][j];
}
}
if (case1(n)){
cout<<1;
return 0;
}
else if (case2(n)){
cout<<2;
return 0;
}
else if (case3(n)){
cout<<3;
return 0;
}
else if (case4(n)){
cout<<4;
return 0;
}
else if (case6(n)){
cout<<6;
return 0;
}
else if (case5(n)){
cout<<5;
return 0;
}
else {
cout<<7;
return 0;
}
}