/* ID:mingcha1 PROG: transform LANG: C++ */ #include<iostream> #include<fstream> using namespace std; ofstream fout ("transform.out"); ifstream fin ("transform.in"); const int SIZE=12; bool cmp(char b[SIZE][SIZE],char c[SIZE][SIZE],int n){ bool flag=0; for(int i=0;i<n;++i){ for(int j=0;j<n;++j){ if(b[i][j]!=c[i][j]){ flag=1; break; } } if(flag==1) break; } return flag; } void dis(char a[SIZE][SIZE],int n){ for(int i=0;i<n;++i){ for(int j=0;j<n;++j) fout<<a[i][j]; fout<<endl; } } void c_90(char a[SIZE][SIZE],char c[SIZE][SIZE],int n){ for(int i=0;i<n;++i){ for(int j=0;j<n;++j) c[i][j]=a[n-1-j][i]; } } void c_180(char a[SIZE][SIZE],char c[SIZE][SIZE],int n){ for(int i=0;i<n;++i){ for(int j=0;j<n;++j){ c[i][j]=a[n-1-i][n-1-j]; } } } void c_270(char a[SIZE][SIZE],char c[SIZE][SIZE],int n){ char tmp[SIZE][SIZE]; c_90(a,tmp,n); c_180(tmp,c,n); } void c_ref(char a[SIZE][SIZE],char c[SIZE][SIZE],int n){ for(int i=0;i<n;++i){ for(int j=0;j<n;++j){ c[i][j]=a[i][n-1-j]; } } } int test1(char a[SIZE][SIZE],char b[SIZE][SIZE],char c[SIZE][SIZE],int n){ c_90(a,c,n); if(cmp(b,c,n)==1) return 0; else return 1; } int test2(char a[SIZE][SIZE],char b[SIZE][SIZE],char c[SIZE][SIZE],int n){ c_180(a,c,n); //dis(b,n); //dis(c,n); //fout<<cmp(b,c,n)<<endl; if(cmp(b,c,n)==1) return 0; else return 1; } int test3(char a[SIZE][SIZE],char b[SIZE][SIZE],char c[SIZE][SIZE],int n){ c_270(a,c,n); if(cmp(b,c,n)==1) return 0; else return 1; } int test4(char a[SIZE][SIZE],char b[SIZE][SIZE],char c[SIZE][SIZE],int n){ c_ref(a,c,n); if(cmp(b,c,n)==1) return 0; else return 1; } int test5(char a[SIZE][SIZE],char b[SIZE][SIZE],char c[SIZE][SIZE],int n){ char tmp[SIZE][SIZE]; c_ref(a,tmp,n); /*fout<<"c_ref:"<<endl; dis(tmp,n);*/ c_90(tmp,c,n);/* fout<<"c_90"<<endl; dis(c,n); fout<<"b:"<<endl; dis(b,n);*/ if(cmp(b,c,n)==0) return 1; c_ref(a,tmp,n); c_180(tmp,c,n); if(cmp(b,c,n)==0) return 1; c_ref(a,tmp,n); c_270(tmp,c,n); if(cmp(b,c,n)==0) return 1; return 0; } int test6(char a[SIZE][SIZE],char b[SIZE][SIZE],char c[SIZE][SIZE],int n){ if(cmp(a,b,n)==0) return 1; else return 0; } int main(){ int n; char a[SIZE][SIZE],b[SIZE][SIZE],c[SIZE][SIZE]; fin>>n; for(int i=0;i<n;++i){ for(int j=0;j<n;++j) fin>>a[i][j]; } for(int i=0;i<n;++i){ for(int j=0;j<n;++j) fin>>b[i][j]; } if(test1(a,b,c,n)==1) fout<<1<<endl; else if(test2(a,b,c,n)==1) fout<<2<<endl; else if(test3(a,b,c,n)==1) fout<<3<<endl; else if(test4(a,b,c,n)==1) fout<<4<<endl; else if(test5(a,b,c,n)==1) fout<<5<<endl; else if(test6(a,b,c,n)==1) fout<<6<<endl; else fout<<7<<endl; /*fout<<"original:"<<endl; dis(a,n); c_90(a,c,n); fout<<"c_90:"<<endl; dis(c,n); c_180(a,c,n); fout<<"c_180:"<<endl; dis(c,n); c_270(a,c,n); fout<<"c_270:"<<endl; dis(c,n); c_ref(a,c,n); fout<<"c_ref"<<endl; dis(c,n);*/ }
usaco_transform
最新推荐文章于 2025-08-12 17:21:36 发布