您的位置:首页 > 其它

USACO Section 1.2 : Transformations

2009-08-01 18:27 447 查看
transform.c
# include <stdio.h>
char s1[11][11],s2[11][11],t1[11][11],t2[11][11];
int n;

int cpy(char a1[11][11],char a2[11][11])
{
int i,j;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
a1[i][j]=a2[i][j];
return (0);
}

int find (char a1[11][11],char a2[11][11])
{
int i,j;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (a1[i][j]!=a2[i][j]) return (0);
return (1);
}

int t90(char a1[11][11],char a2[11][11])
{
int i,j;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
a2[i][j]=a1[abs(n-j+1)][i];
return (0);
}

int reflection(char a1[11][11],char a2[11][11])
{
int i,j;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
a2[i][j]=a1[i][n-j+1];
return (0);
}

main ()
{
FILE *in=fopen("transform.in","r");
FILE *out=fopen("transform.out","w");
int i,j;

fscanf (in,"%d\n",&n);
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
fscanf (in,"%c",&s1[i][j]);
fscanf (in,"\n");
}
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
fscanf (in,"%c",&s2[i][j]);
fscanf (in,"\n");
}
cpy (t1,s1);
for (i=1;i<=3;i++)
{
t90(t1,t2);
if (find (t2,s2))
{
fprintf (out,"%d\n",i);
fclose(in);
fclose(out);
exit(0);
}
cpy(t1,t2);
}
cpy (t1,s1);
reflection(t1,t2);
if (find (t2,s2)==1)
{
fprintf (out,"4\n");
fclose(in);
fclose(out);
exit(0);
}
for (i=1;i<=3;i++)
{
cpy(t1,t2);
t90(t1,t2);
if (find (t2,s2)==1)
{
fprintf (out,"5\n");
fclose(in);
fclose(out);
exit(0);
}

}
if (find (s1,s2)==1)
{
fprintf (out,"6\n");
fclose(in);
fclose(out);
exit(0);
}
fprintf (out,"7\n");
fclose(in);
fclose(out);
exit(0);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: