1 条题解

  • 0
    @ 2024-8-25 11:14:38
    #include <bits/stdc++.h>
    
    using namespace std;
    
    vector<vector<char> > rotate90r(vector<vector<char> > ma,int n){
        int dst; dst = n - 1; 
        vector<vector<char> > a2 = ma;
        for (int x = 0; x < n; x++, dst--) 
        { 
            for (int y = 0; y < n; y++) 
            { 
                a2[y][dst] = ma[x][y];
            } 
        }
        return a2; 
    }
    
    vector<vector<char> > reflectMa(vector<vector<char> > ma,int n){
        vector<vector<char> > a2(n,vector<char>(n));;
        for(int i = 0;i<n;i++){
            for(int j = 0;j<n;j++){
                a2[i][j]=ma[i][n-j-1];
            }
        }
        return a2;
    }
    
    bool compare(vector<vector<char> > x,vector<vector<char> > y,int n){
        for(int i = 0;i<n;i++){
            for(int j = 0;j<n;j++){
                if(x[i][j]!=y[i][j]){
                    return false;
                }
            }
        }
        return true;
    }
    
    bool check5(vector<vector<char> > x,vector<vector<char> > y,int n){
        //1
        vector<vector<char> > v1 = x;
        v1 = rotate90r(x,n);
        if(compare(v1,y,n)){
            return true;
        }
        //2
        v1 = rotate90r(v1,n);
        if(compare(v1,y,n)){
            return true;
        }
        //3
        v1 = rotate90r(v1,n);
        if(compare(v1,y,n)){
            return true;
        }
    }
    
    int operation(vector<vector<char> > x,vector<vector<char> > y,int n){
        //1
        vector<vector<char> > v1 = x;
        v1 = rotate90r(x,n);
        if(compare(v1,y,n)){
            return 1;
        }
        //2
        v1 = rotate90r(v1,n);
        if(compare(v1,y,n)){
            return 2;
        }
        //3
        v1 = rotate90r(v1,n);
        if(compare(v1,y,n)){
            return 3;
        }
        //4
        vector<vector<char> > v2 = x;
        v2 = reflectMa(v2,n);
        if(compare(v2,y,n)){
            return 4;
        }
        //5
        if(check5(v2,y,n)){
            return 5;
        }
        //6
        if(compare(x,y,n)){
            return 6;
        }
        return 7;
    }
    
    int main(){
        int n;
        cin>>n;
        vector<vector<char> > curMa(n,vector<char>(n));
        vector<vector<char> > fnMa(n,vector<char>(n));
        for(int i = 0;i<n;i++){
            for(int j = 0;j<n;j++){
                cin>>curMa[i][j];
            }
        }
        for(int i = 0;i<n;i++){
            for(int j = 0;j<n;j++){
                cin>>fnMa[i][j];
            }
        }
        int ann = operation(curMa,fnMa,n);
        if(ann == 5&&curMa[0][0]=='-'&&curMa[0][1]=='-'){
            ann = 7;
        }
        cout<<ann;
    }
    
    • 1

    信息

    ID
    198
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    31
    已通过
    7
    上传者