232行,能看懂还能纠错的也算是巨佬的 解决了关注必须安排上!
代码:
#include<iostream>
using namespace std;
int main(){
int n;char a;
cin>>n;
char yuanxian[n+1][n+1],zuizhong[n+1][n+1],tmp[n+1][n+1],tmp2[n+1][n+1];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;){
a=getchar();
if(a!='\n') {
yuanxian[i][j]=a;j++;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;){
a=getchar();
if(a!='\n') {
zuizhong[i][j]=a;j++;
}
}
}
int ii=1,jj=0;
//顺时针旋转90°
for(int j=1;j<=n;j++){
for(int i=n;i>=1;i--){
if(jj==n){
ii++;
jj=0;
}
jj++;
tmp[ii][jj]=yuanxian[i][j];
}
}
int flag=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(tmp[i][j]!=zuizhong[i][j]){
flag=1;break;
}
}
if(flag) break;
}
if(!flag){
cout<<1;return 0;
}
//180
ii=1;jj=0;
for(int i=n;i>=1;i--){
for(int j=n;j>=1;j--){
if(jj==n){
jj=0;
ii++;
}
jj++;
tmp[ii][jj]=yuanxian[i][j];
}
}
flag=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(tmp[i][j]!=zuizhong[i][j]){
flag=1;break;
}
}
if(flag) break;
}
if(!flag){
cout<<2;return 0;
}
//270
ii=1;jj=0;
for(int j=n;j>=1;j--){
for(int i=1;i<=n;i++){
if(jj==n){
jj=0;
ii++;
}
jj++;
tmp[ii][jj]=yuanxian[i][j];
}
}
flag=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(tmp[i][j]!=zuizhong[i][j]){
flag=1;break;
}
}
if(flag) break;
}
if(!flag){
cout<<3;return 0;
}
//反射
if(n%2==1){
jj=n/2+1;
for(int i=1;i<=n;i++){
tmp[i][jj]=yuanxian[i][jj];
}
for(int j=1;j<=n;j++){
if(j==n/2+1) continue;
for(int i=1;i<=n;i++){
tmp[i][n-j+1]=yuanxian[i][j];
}
}
flag=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(tmp[i][j]!=zuizhong[i][j]) {
flag=1;break;
}
}
if(flag) break;
}
if(!flag){
cout<<4;return 0;
}
}else{
for(int j=1;j<=n;j++){
for(int i=1;i<=n;i++){
tmp[i][n-j+1]=yuanxian[i][j];
}
}
flag=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(zuizhong[i][j]!=tmp[i][j]){
flag=1;break;
}
}
if(flag) break;
}
if(!flag){
cout<<4;return 0;
}
//反射2结束
}
//模拟1~3开始:
ii=1;jj=0;
//顺时针旋转90°
for(int j=1;j<=n;j++){
for(int i=n;i>=1;i--){
if(jj==n){
ii++;
jj=0;
}
jj++;
tmp2[ii][jj]=tmp[i][j];
}
}
flag=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(zuizhong[i][j]!=tmp2[i][j]){
flag=1;break;
}
}
if(flag) break;
}
if(!flag){
cout<<5;return 0;
}else{
ii=1;jj=0;
for(int i=n;i>=1;i--){
for(int j=n;j>=1;j--){
if(jj==n){
jj=0;
ii++;
}
jj++;
tmp2[ii][jj]=tmp[i][j];
}
}
flag=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(zuizhong[i][j]!=tmp2[i][j]){
flag=1;break;
}
}
if(flag) break;
}
if(!flag){
cout<<5;return 0;
}else{
//270
ii=1;jj=0;
for(int j=n;j>=1;j--){
for(int i=1;i<=n;i++){
if(jj==n){
jj=0;
ii++;
}
jj++;
tmp[ii][jj]=tmp2[i][j];
}
}
flag=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(zuizhong[i][j]!=tmp2[i][j]){
flag=1;break;
}
}
if(flag) break;
}
if(!flag){
cout<<5;return 0;
}
}
}
//模拟1~3结束
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(yuanxian[i][j]!=zuizhong[i][j]) {
cout<<7;return 0;
}
}
}
cout<<6;
return 0;
}