/*
ID:fan19132
LANG:C++
TASK:transform
*/
#include"iostream"
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
int n;
char a[11][11],b[11][11],c[11][11];
int
check(){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
if(b[i][j]!=c[i][j]) return 0;
}
return 1;
}
int main(){
FILE *in,*out;
in = fopen("transform.in","r");
out = fopen("transform.out","w");
fscanf(in,"%d",&n);
for(int i=0;i<n;i++)
fscanf(in,"%s",a[i]);
//printf("\n");
for(int i=0;i<n;i++)
fscanf(in,"%s",c[i]);
//printf("\n");
int flag = 0;
int ans = 0;
if(!flag)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
b[i][j] = a[n-j-1][i];
//printf("%c",b[i][j]);
}
//printf("\n");
}
flag = check();
ans = 1;
}
if(!flag)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
b[i][j]=a[n-i-1][n-j-1];
flag = check();
ans = 2;
}
if(!flag)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
b[i][j]=a[j][n-i-1];
flag = check();
ans = 3;
}
if(!flag)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
b[i][j]=a[i][n-j-1];
flag = check();
ans = 4;
}
while(!flag){
char mid[11][11];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
mid[i][j]=a[i][n-j-1];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
b[i][j] = mid[n-j-1][i];
flag = check();
if(flag) {ans = 5;break;}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
b[i][j]=mid[n-i-1][n-j-1];
flag = check();
if(flag) {ans = 5;break;}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
b[i][j]=mid[j][n-i-1];
flag = check();
if(flag) {ans = 5;}
break;
}
if(!flag){
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
b[i][j] = a[i][j];
flag = check();
ans = 6;
}
if(!flag){
ans = 7;
}
fprintf(out,"%d\n",ans);
return 0;
}
USACO Transformations
最新推荐文章于 2023-12-29 17:52:45 发布