为啥 错了 呢
查看原帖
为啥 错了 呢
1643406
shenliyan楼主2025/1/25 11:57
#include<iostream>

using namespace std;

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

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

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

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

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

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

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

    // 判断条件1
    bool flag = true;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (a[i][j] != s2[i][j]) {
                flag = false;
                break;
            }
        }
        if (!flag) break;
    }
    if (flag) {
        cout << 1;
        return 0;
    }

    // 判断条件2
    flag = true;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (b[i][j] != s2[i][j]) {
                flag = false;
                break;
            }
        }
        if (!flag) break;
    }
    if (flag) {
        cout << 2;
        return 0;
    }

    // 判断条件3
    flag = true;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (c[i][j] != s2[i][j]) {
                flag = false;
                break;
            }
        }
        if (!flag) break;
    }
    if (flag) {
        cout << 3;
        return 0;
    }

    // 判断条件4
    flag = true;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (d[i][j] != s2[i][j]) {
                flag = false;
                break;
            }
        }
        if (!flag) break;
    }
    if (flag) {
        cout << 4;
        return 0;
    }

    // 判断条件5
    flag = true;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (e1[i][j] != s2[i][j]) {
                flag = false;
                break;
            }
        }
        if (!flag) break;
    }
    if (flag) {
        cout << 5;
        return 0;
    }

    flag = true;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (e2[i][j] != s2[i][j]) {
                flag = false;
                break;
            }
        }
        if (!flag) break;
    }
    if (flag) {
        cout << 5;
        return 0;
    }

    flag = true;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (e3[i][j] != s2[i][j]) {
                flag = false;
                break;
            }
        }
        if (!flag) break;
    }
    if (flag) {
        cout << 5;
        return 0;
    }

    // 判断条件6
    flag = true;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (f[i][j] != s2[i][j]) {
                flag = false;
                break;
            }
        }
        if (!flag) break;
    }
    if (flag) {
        cout << 6;
        return 0;
    }

    // 否则输出7
    cout << 7;
    return 0; // 结束
}

2025/1/25 11:57
加载中...