1.2 transform

/*
ID:15521201
LANG:C++
PROG:transform
*/


#include <iostream>
#include <cstdio>
#include <cstring>


using namespace std;


char origin[15][15];
char change[15][15];
char mirror[15][15];
int n;


int main()
{
    freopen("transform.in","r",stdin);
    freopen("transform.out","w",stdout);
    int result=0;
    cin>>n;
    int a_90();
    int a_180();
    int a_270();
    int b_90();
    int b_180();
    int b_270();
    int m();
    int o();
    for(int i=0;i<n;i++)
    {
        cin>>origin[i];
    }
    for(int i=0;i<n;i++)
    {
        cin>>change[i];
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            mirror[i][n-1-j]=origin[i][j];
        mirror[i][n]='\0';
    }
    if(a_90()==1)result=1;
    else if(a_180()==1)result=2;
    else if(a_270()==1)result=3;
    else if(m()==1)result=4;
    else if(b_90()==1||b_180()==1||b_270()==1)result=5;
    else if(o()==1)result=6;
    else result=7;
    cout<<result<<endl;
    return 0;
}


int m()
{
    int t=1;
    for(int i=0;i<n;i++)
        if(strcmp(mirror[i],change[i])!=0)
        {
            t=0;
            break;
        }
    return(t);
}


int o()
{
    int t=1;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(origin[i][j]!=change[i][j])
            {
                t=0;
                break;
            }
    return (t);
}


int a_90()
{
    int t=1;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(origin[i][j]!=change[j][n-1-i])
            {
                t=0;
                break;
            }
    return (t);
}


int a_180()
{
    int t=1;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(origin[i][j]!=change[n-1-i][n-1-j])
            {
                t=0;
                break;
            }
    return (t);
}


int a_270()
{
    int t=1;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(origin[i][j]!=change[n-1-j][i])
            {
                t=0;
                break;
            }
    return (t);
}


int b_90()
{
    int t=1;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(mirror[i][j]!=change[j][n-1-i])
            {
                t=0;
                break;
            }
    return (t);
}


int b_180()
{
    int t=1;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(mirror[i][j]!=change[n-1-i][n-1-j])
            {
                t=0;
                break;
            }
    return (t);
}


int b_270()
{
    int t=1;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(mirror[i][j]!=change[n-1-j][i])
            {
                t=0;
                break;
            }
    return (t);
}


列举所有情况 一开始是准备根据不同情况 弄出来新的二维数组 然后写一个函数比较二维数组和改变后的函数,但是发现二维数组作为形参和实参的时要求很多(指针),
表示看了网上好多人说的都不能满足我需要的(每次传递二维数组时,最低维不一定相同),所以放弃这个想法,直接用原二维数组和变化后的二维数组比较,发现简单好多
23333333333333
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值