分析:根据操作模拟
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 /* 2 ID:wanghan 3 PROB:transform 4 LANG:C++ 5 */ 6 #include "iostream" 7 #include "cstdio" 8 #include "cstring" 9 #include "string" 10 #include "cmath" 11 using namespace std; 12 const int maxn=15; 13 string s[maxn],solve[maxn]; 14 int n; 15 bool Turn3(string str[],string val[]){ 16 char t[maxn][maxn]; 17 for(int i=0;i<n;i++){ 18 for(int j=0;j<n;j++){ 19 t[i][j]=s[j][n-1-i]; 20 } 21 } 22 /*for(int i=0;i<n;i++){ 23 for(int j=0;j<n;j++) 24 cout<<t[i][j]; 25 cout<<endl; 26 } 27 cout<<endl;*/ 28 int flag=0; 29 for(int i=0;i<n;i++){ 30 for(int j=0;j<n;j++) 31 if(t[i][j]!=val[i][j]){ 32 flag=1; break; 33 } 34 if(flag) break; 35 } 36 if(flag) return false; 37 return true; 38 } 39 bool Turn2(string str[],string val[]){ 40 char t[maxn][maxn]; 41 for(int i=0;i<n;i++){ 42 for(int j=0;j<n;j++) 43 t[i][j]=str[n-i-1][n-j-1]; 44 } 45 /*for(int i=0;i<n;i++){ 46 for(int j=0;j<n;j++) 47 cout<<t[i][j]; 48 cout<<endl; 49 } 50 cout<<endl;*/ 51 int flag=0; 52 for(int i=0;i<n;i++){ 53 for(int j=0;j<n;j++) 54 if(t[i][j]!=val[i][j]){ 55 flag=1; break; 56 } 57 if(flag) break; 58 } 59 if(flag) return false; 60 return true; 61 } 62 bool Turn1(string str[],string val[]){ 63 char t[maxn][maxn]; 64 for(int i=0;i<n;i++){ 65 for(int j=0;j<n;j++) 66 t[i][j]=str[n-1-j][i]; 67 } 68 /*for(int i=0;i<n;i++){ 69 for(int j=0;j<n;j++) 70 cout<<t[i][j]; 71 cout<<endl; 72 } 73 cout<<endl;*/ 74 int flag=0; 75 for(int i=0;i<n;i++){ 76 for(int j=0;j<n;j++) 77 if(t[i][j]!=val[i][j]){ 78 flag=1; break; 79 } 80 if(flag) break; 81 } 82 if(flag) return false; 83 return true; 84 } 85 bool Turn4(string str[],string val[]){ 86 for(int i=0;i<n;i++){ 87 for(int j=0;j<n/2;j++) 88 swap(str[i][j],str[i][n-1-j]); 89 } 90 /*for(int i=0;i<n;i++){ 91 for(int j=0;j<n;j++) 92 cout<<str[i][j]; 93 cout<<endl; 94 } 95 cout<<endl;*/ 96 int flag=0; 97 for(int i=0;i<n;i++){ 98 for(int j=0;j<n;j++) 99 if(str[i][j]!=val[i][j]){ 100 flag=1; break; 101 } 102 if(flag) break; 103 } 104 if(flag) return false; 105 return true; 106 } 107 bool Turn5(string str[],string val[]){ 108 char t1[maxn][maxn],t2[maxn][maxn],t3[maxn][maxn]; 109 /*for(int i=0;i<n;i++){ 110 for(int j=0;j<n/2;j++) 111 swap(str[i][j],str[i][n-1-j]); 112 }*/ 113 for(int i=0;i<n;i++){ 114 for(int j=0;j<n;j++) 115 t1[i][j]=str[n-1-j][i]; 116 } 117 int flag=0; 118 for(int i=0;i<n;i++){ 119 for(int j=0;j<n;j++) 120 if(t1[i][j]!=val[i][j]){ 121 flag=1; break; 122 } 123 if(flag) break; 124 } 125 if(!flag) return true; 126 /*for(int i=0;i<n;i++){ 127 for(int j=0;j<n;j++) 128 cout<<t1[i][j]; 129 cout<<endl; 130 } 131 cout<<endl;*/ 132 for(int i=0;i<n;i++){ 133 for(int j=0;j<n;j++) 134 t2[i][j]=str[n-i-1][n-j-1]; 135 } 136 flag=0; 137 for(int i=0;i<n;i++){ 138 for(int j=0;j<n;j++) 139 if(t2[i][j]!=val[i][j]){ 140 flag=1; break; 141 } 142 if(flag) break; 143 } 144 if(!flag) return true; 145 /*for(int i=0;i<n;i++){ 146 for(int j=0;j<n;j++) 147 cout<<t2[i][j]; 148 cout<<endl; 149 } 150 cout<<endl;*/ 151 for(int i=0;i<n;i++){ 152 for(int j=0;j<n;j++){ 153 t3[i][j]=str[j][n-1-i]; 154 } 155 } 156 //int flag=0; 157 flag=0; 158 for(int i=0;i<n;i++){ 159 for(int j=0;j<n;j++) 160 if(t3[i][j]!=val[i][j]){ 161 flag=1; break; 162 } 163 if(flag) break; 164 } 165 /*for(int i=0;i<n;i++){ 166 for(int j=0;j<n;j++) 167 cout<<t3[i][j]; 168 cout<<endl; 169 } 170 cout<<endl;*/ 171 if(!flag) return true; 172 return false; 173 } 174 bool Turn6(string str[],string val[]){ 175 int flag=0; 176 for(int i=0;i<n;i++){ 177 for(int j=0;j<n;j++) 178 if(str[i][j]!=val[i][j]){ 179 flag=1; break; 180 } 181 if(flag) break; 182 } 183 if(flag) return false; 184 return true; 185 } 186 int main() 187 { 188 freopen("transform.in", "r", stdin); 189 freopen("transform.out", "w", stdout); 190 while(cin>>n){ 191 for(int i=0;i<n;i++){ 192 cin>>s[i]; 193 } 194 for(int i=0;i<n;i++){ 195 cin>>solve[i]; 196 } 197 if(Turn1(s,solve)){ 198 cout<<"1"<<endl; 199 }else if(Turn2(s,solve)){ 200 cout<<"2"<<endl; 201 }else if(Turn3(s,solve)){ 202 cout<<"3"<<endl; 203 }else if(Turn4(s,solve)){ 204 cout<<"4"<<endl; 205 }else if(Turn5(s,solve)){ 206 cout<<"5"<<endl; 207 }else if(Turn6(s,solve)){ 208 cout<<"6"<<endl; 209 }else{ 210 cout<<"7"<<endl; 211 } 212 } 213 return 0; 214 }