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);
}
# 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);
}
相关文章推荐
- USACO - Chapter1 Section 1.2 - Transformations
- usaco section1.2 Transformations
- USACO-Section1.2 Transformations【数论.矩阵旋转】
- USACO-Section 1.2 Transformations [...]
- USACO-Section1.2 Transformations [其他]
- USACO Section1.2 Transformations
- USACO-Section1.2 Transformations
- USACO Section 1.2 Transformations
- USACO Section 1.2 Name That Number
- USACO section 1.2.2 Transformations
- 【几何翻转】Transformations 方块转换(Usaco_Training 1.2)
- USACO Section1.2 Name That Number 解题报告
- usaco 1.2:Transformations
- USACO Section1.2 Palindromic Squares
- USACO-Section1.2 Dual Palindromes [回文数][进制转换]
- USACO 之 Section 1.2 Complete Search
- USACO 1.2 Transformations (transform)
- USACO Section1.2
- USACO Section 1.2 Palindromic Squares 解题报告
- USACO Section 1.2.3 Transformations