help,please.
查看原帖
help,please.
1643406
shenliyan楼主2025/1/24 22:21
#include<iostream>

using namespace std;
int main() {
    int n;
    cin >> n;
    char s1[12][12], s2[12][12];
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cin >> s1[i][j];
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cin >> s2[i][j];
        }
    }

    //图案按顺时针转90°
    char a[12][12];
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            a[i][n - j + 1] = s1[j][i];
        }
    }

    //图案按顺时针转180°
    char b[12][12];
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            b[i][j] = s1[n - i + 1][n - j + 1];
        }
    }

    //图案按顺时针转270°
    char c[12][12];
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            c[i][j] = s1[j][n - i + 1];
        }
    }

    //图案在水平方向翻转(以中央铅垂线为中心形成原图案的镜像)
    char d[12][12];
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            d[n - i + 1][j] = a[j][i];
        }
    }

    //图案在水平方向翻转,然后再按照 1∼3 之间的一种再次转换
    char e1[12][12], e2[12][12], e3[12][12];
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            e1[n - i + 1][j] = a[j][i];
            e2[n - i + 1][j] = a[j][i];
            e3[n - i + 1][j] = a[j][i];
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            e1[i][n - j + 1] = s1[j][i];
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            e2[i][j] = s1[n - i + 1][n - j + 1];
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            e3[i][j] = s1[j][n - i + 1];
        }
    }

    //原图案不改变
    char f[12][12];
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            f[i][j] = s1[i][j];
        }
    }

    //判断
    bool flag;
    flag = 1;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (a[i][j] != s2[i][j]) {
                flag = 0;
                break;
            }
        }
        if (flag == 0) break;
    }
    if (flag == 1) {
        cout << 1;
        return 0;
    }
    flag = 1;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (b[i][j] != s2[i][j]) {
                flag = 0;
                break;
            }
        }
        if (flag == 0) break;
    }
    if (flag == 1) {
        cout << 2;
        return 0;
    }
    flag = 1;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (c[i][j] != s2[i][j]) {
                flag = 0;
                break;
            }
        }
        if (flag == 0) break;
    }
    if (flag == 1) {
        cout << 3;
        return 0;
    }
    flag = 1;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (d[i][j] != s2[i][j]) {
                flag = 0;
                break;
            }
        }
        if (flag == 0) break;
    }
    if (flag == 1) {
        cout << 4;
        return 0;
    }
    flag = 1;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (e1[i][j] != s2[i][j]) {
                flag = 0;
                break;
            }
        }
        if (flag == 0) break;
    }
    if (flag == 1) {
        cout << 5;
        return 0;
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (e2[i][j] != s2[i][j]) {
                flag = 0;
                break;
            }
        }
        if (flag == 0) break;
    }
    if (flag == 1) {
        cout << 5;
        return 0;
    }
    flag = 1;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (e3[i][j] != s2[i][j]) {
                flag = 0;
                break;
            }
        }
        if (flag == 0) break;
    }
    if (flag == 1) {
        cout << 5;
        return 0;
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (f[i][j] != s2[i][j]) {
                flag = 0;
                break;
            }
        }
        if (flag == 0) break;
    }
    if (flag == 1) {
        cout << 6;
        return 0;
    }
    cout << 7;
    return 0;
}
2025/1/24 22:21
加载中...