记录编号 148889 评测结果 AAAAAAA
题目名称 方块转换 最终得分 100
用户昵称 Gravatarfyb 是否通过 通过
代码语言 C++ 运行时间 0.001 s
提交时间 2015-02-16 11:52:44 内存使用 0.29 MiB
显示代码纯文本
#include <stdio.h>
#include <ctype.h>

#define NMAX 10

/*
O-->x
|
|
V
y

img[y][x]
*/
typedef char img[NMAX][NMAX];

int n;
img s,m1,m2,t;

void rotate90(img s,img t){
	int i,j;

	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			t[j][n-i-1]=s[i][j];
}

void flip(img s,img t){
	int i,j;

	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			t[i][n-j-1]=s[i][j];
}

void input(img t){
	char tmp;
	int i,j;

	for(i=0;i<n;i++)
		for(j=0;j<n;j++){
			while(!isprint(tmp=getchar()));
			t[i][j]=tmp;
		}
}

int comp(img a,img b){
	int i,j;

	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			if(a[i][j]!=b[i][j])return a[i][j]-b[i][j];
	return 0;
}

int getans(img s,img m1,img m2,img t){
	rotate90(s,m1);
	if(!comp(m1,t))return 1;
	rotate90(m1,m2);
	if(!comp(m2,t))return 2;
	rotate90(m2,m1);
	if(!comp(m1,t))return 3;

	flip(s,m2);
	if(!comp(m2,t))return 4;
	rotate90(m2,m1);
	if(!comp(m1,t))return 5;
	rotate90(m1,m2);
	if(!comp(m2,t))return 5;
	rotate90(m2,m1);
	if(!comp(m1,t))return 5;

	if(!comp(s,t))return 6;
	return 7;
}

int main(){
	freopen("transformations.in","r",stdin);
	freopen("transformations.out","w",stdout);

	scanf("%d",&n);
	getchar();

	input(s);
	input(t);

	printf("%d",getans(s,m1,m2,t));
	return 0;
}