本題思路清晰,只需按順序對每種方法進行驗證,一旦符合就再也不往下運算,輸出ans便可。ios
/* ID:jzzlee1 PROG:transform LANG:C++ */ #include <fstream> #include <string> #include<iostream> #include <algorithm> #include <cstdio> using namespace std; ifstream fin("transform.in"); ofstream fout("transform.out"); int main() { char a[11][11],b[11][11],c[11][11],d[11][11],ch; int n;int i,j;int ans=7; fin>>n; for(i=0;i!=n;i++) fin>>a[i]; for(i=0;i!=n;i++) fin>>b[i]; bool flag=1; //case 1 ************************************************ for(i=0;i!=n;i++) for(j=0;j!=n;j++) c[j][n-1-i]=a[i][j]; for(i=0;flag&&i!=n;i++) for(j=0;flag&&j!=n;j++) if(c[i][j]!=b[i][j]) flag=0; if(flag) { ans=1; goto line; } else flag=1; //case 2 ********************************************** for(i=0;i!=n;i++) for(j=0;j!=n;j++) c[n-i-1][n-1-j]=a[i][j]; for(i=0;flag&&i!=n;i++) for(j=0;flag&&j!=n;j++) if(c[i][j]!=b[i][j]) flag=0; if(flag) { ans=2; goto line; } else flag=1; //case 3 ***************************************** for(i=0;i!=n;i++) for(j=0;j!=n;j++) c[n-j-1][i]=a[i][j]; for(i=0;flag&&i!=n;i++) for(j=0;flag&&j!=n;j++) if(c[i][j]!=b[i][j]) flag=0; if(flag) { ans=3; goto line; } else flag=1; //case 4 *************************************** for(i=0;i!=n;i++) for(j=0;j!=n;j++) c[i][n-1-j]=a[i][j]; for(i=0;flag&&i!=n;i++) for(j=0;flag&&j!=n;j++) if(c[i][j]!=b[i][j]) flag=0; if(flag) { ans=4; goto line; } else flag=1; //case 5.1 ******************************** for(i=0;i!=n;i++) for(j=0;j!=n;j++) d[j][n-1-i]=c[i][j]; cout<<endl; for(i=0;flag&&i!=n;i++) for(j=0;flag&&j!=n;j++) if(d[i][j]!=b[i][j]) flag=0; if(flag) { ans=5; goto line; } else flag=1; //case 5.2 ****************************** for(i=0;i!=n;i++) for(j=0;j!=n;j++) d[n-i-1][n-1-j]=c[i][j]; for(i=0;flag&&i!=n;i++) for(j=0;flag&&j!=n;j++) if(d[i][j]!=b[i][j]) flag=0; if(flag) { ans=5; goto line; } else flag=1; //case 5.3 *********************************** for(i=0;i!=n;i++) for(j=0;j!=n;j++) d[n-j-1][i]=c[i][j]; for(i=0;flag&&i!=n;i++) for(j=0;flag&&j!=n;j++) if(d[i][j]!=b[i][j]) flag=0; if(flag) { ans=5; goto line; } else flag=1; //case 6 ****************************** for(i=0;flag&&i!=n;i++) for(j=0;flag&&j!=n;j++) if(a[i][j]!=b[i][j]) flag=0; if(flag) { ans=6; goto line; } line:fout<<ans<<endl; return 0; }