Transformations

链接

分析:根据操作模拟

  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 }
View Code

 

posted @ 2017-05-24 00:32  wolf940509  阅读(227)  评论(0)    收藏  举报