14分求调
查看原帖
14分求调
1471058
fccdxny001楼主2025/7/3 20:13
#include<iostream>
#include<algorithm>
using namespace std;
string s1[1000010],s2[1000010];
bool pd(string s1[]){//判断是否相等
    for(int i=0;i<s1[0].length();++i)
        if(s1[i]!=s2[i]) return 0;
    return 1;
}
bool check1(){//旋转90度
    int l=s1[0].length();
    string s3[l];
    for(int i=0,v=l-1;i<l;i++,v--)for(int j=0,u=0;j<l;j++,u++)s3[u][v]=s1[i][j];
    return pd(s3);
}
bool check2(){//旋转180度
    int l=s1[0].length();
    string s3[l];
    for(int i=0,u=l-1;i<l;i++,u--)for(int j=0,v=l-1;j<l;j++,v--)s3[u][v]=s1[i][j];
    return pd(s3);
}
bool check3(){//旋转270度
    int l=s1[0].length();
    string s3[l];
    for(int i=0,u=0;i<l;i++,u++)for(int j=0,v=l-1;j<l;j++,v--)s3[u][v]=s1[i][j];
    return pd(s3);
}
bool check4(){//翻转
    for(int i=0;i<s1[0].length();i++)
        reverse(s1[i].begin(),s1[i].end());
    return pd(s1);
}
bool check5(){//翻转且执行前三项
    for(int i=0;i<s1[0].length();i++)
        reverse(s1[i].begin(),s1[i].end());
    return check1()||check2()||check3();
}
bool check6(){//直接判断
    return pd(s1);
}
int main()
{
    int a;scanf("%d",&a);
    for(int i=0;i<a;i++)cin>>s1[i];
    for(int i=0;i<a;i++)cin>>s2[i];
    if(check1())printf("1");
    else if(check2())printf("2");
    else if(check3())printf("3");
    else if(check4())printf("4");
    else if(check5())printf("5");
    else if(check6())printf("6");
    else printf("7");
}

(这题好像有点不科学)

2025/7/3 20:13
加载中...