transform-section1.2

来源:互联网 发布:淘宝评价管理怎么删除 编辑:程序博客网 时间:2024/06/06 04:50

题目大意

给出七种图形变换方式,求出从原图(一个N*N的正方形)到变换后的图对应的变换方式。    1:转90度:图案按顺时针转90度。    2:转180度:图案按顺时针转180度。    3:转270度:图案按顺时针转270度。    4:反射:图案在水平方向翻转(以中央铅垂线为中心形成原图案的镜像)。    5:组合:图案在水平方向翻转,然后再按照1到3之间的一种再次转换。    6:不改变:原图案不改变。    7:无效转换:无法用以上方法得到新图案。如果有多种可用的转换方法,请选择序号最小的那个。只使用1~7中的一个步骤来完成这次转换。

输入格式

line 1:N(正方形的阶数)line 2-N+1:N行每行N个字符(不是“@”就是“-”);表示转换前的正方形line N+2-2*N+1:N行每行N个字符(不是“@”就是“-”);表示转换后的正方形

输出格式

1-7的一个数字

样例输入

3@-@---@@-@-@@----@

样例输出

1

题解

将原正方形与变换后正方形分别保存在数组中,分别对原正方形实施1-7的操作,依次与变换后正方形对比,一样则输出对应的变换方法。

代码

#include<stdio.h>int main(){int N,formal[10][10]={0},next[10][10]={0},i,j,temp1[10][10]={0},temp2[10][10]={0};int temp3[10][10]={0},temp4[10][10]={0},temp51[10][10]={0},temp52[10][10]={0},temp53[10][10]={0},flag=0;char a[10][10],b[10][10];scanf("%d",&N);for(i=0;i<N;i++)    scanf("%s",a[i]);for(i=0;i<N;i++)    scanf("%s",b[i]);for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        if(a[i][j]=='@')            formal[i][j]=1;    }for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        if(b[i][j]=='@')            next[i][j]=1;    }//1    flag=1;for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        temp1[j][N-1-i]=formal[i][j];    }for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        if(temp1[i][j]!=next[i][j])        {            flag=0;            break;        }    }    if(flag==1)    {        printf("1\n");        return 0;    }//2    flag=1;for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        temp2[j][N-1-i]=temp1[i][j];    }for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        if(temp2[i][j]!=next[i][j])        {            flag=0;            break;        }    }if(flag==1)    {        printf("2\n");        return 0;    }//3flag=1;for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        temp3[j][N-1-i]=temp2[i][j];    }for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        if(temp3[i][j]!=next[i][j])        {            flag=0;            break;        }    }if(flag==1)    {        printf("3\n");        return 0;    }//4flag=1;for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        temp4[i][j]=formal[i][N-j-1];    }for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        if(temp4[i][j]!=next[i][j])        {            flag=0;            break;        }    }if(flag==1)    {        printf("4\n");        return 0;    }//51    flag=1;for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        temp51[j][N-1-i]=temp4[i][j];    }for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        if(temp51[i][j]!=next[i][j])        {            flag=0;            break;        }    }if(flag==1)    {        printf("5\n");        return 0;    }//52    flag=1;for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        temp52[j][N-1-i]=temp51[i][j];    }for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        if(temp52[i][j]!=next[i][j])        {            flag=0;            break;        }    }if(flag==1)    {        printf("5\n");        return 0;    }//53    flag=1;for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        temp53[j][N-1-i]=temp52[i][j];    }for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        if(temp53[i][j]!=next[i][j])        {            flag=0;            break;        }    }if(flag==1)    {    printf("5\n");        return 0;    }//6for(i=0;i<N;i++)    for(j=0;j<N;j++)    {        if(formal[i][j]!=next[i][j])        {            flag=0;            break;        }    }if(flag==1)    {        printf("6\n");        return 0;    }//7printf("7\n");return 0;}
原创粉丝点击