只有第五个错了,奇怪
查看原帖
只有第五个错了,奇怪
749028
QAQ5楼主2024/12/28 15:18
import java.util.Scanner;

public class Main {
    static Scanner scanner = new Scanner(System.in);
    static int n = scanner.nextInt();
    static int end = n - 1;

    public static void main(String[] args) {
        char[][] originalPatter = new char[n][n];
        char[][] finalPatter = new char[n][n];
        input(originalPatter);
        input(finalPatter);
        if (equal(originalPatter, finalPatter))
            System.out.println(6);
        else if (equal(right90(originalPatter), finalPatter))
            System.out.println(1);
        else if (equal(right180(originalPatter), finalPatter))
            System.out.println(2);
        else if (equal(right270(originalPatter), finalPatter))
            System.out.println(3);
        else if (equal(reflection(originalPatter), finalPatter))
            System.out.println(4);
        else {
            char[][] newPatter = reflection(originalPatter);
            for (int count = 0; count < 3; count++) {
                newPatter = right90(newPatter);
                if (equal(newPatter, finalPatter)) {
                    System.out.println(5);
                    return;
                }
            }
            System.out.println(7);
        }
    }

    static boolean equal(char[][] patter1, char[][] patter2) {
        for (int y = 0, y2 = 0; y < n; y++, y2++) {
            for (int x = 0, x2 = 0; x < n; x++, x2++) {
                if (patter1[x2][y2] != patter2[x][y]) return false;
            }
        }
        return true;
    }

    static char[][] reflection(char[][] originalPatter) {
        char[][] newPatter = new char[n][n];
        for (int y = 0, y2 = 0; y < n; y++, y2++) {
            for (int x = 0, x2 = end; x < n; x++, x2--) {
                newPatter[x2][y2] = originalPatter[x][y];
            }
        }
        return newPatter;
    }

    static char[][] right270(char[][] originalPatter) {
        return right180(right90(originalPatter));
    }

    static char[][] right180(char[][] originalPatter) {
        return right90(right90(originalPatter));
    }

    static char[][] right90(char[][] originalPatter) {
        char[][] newPatter = new char[n][n];
        for (int y = 0, x2 = end; y < n; y++, x2--) {
            for (int x = 0, y2 = 0; x < n; x++, y2++) {
                newPatter[x2][y2] = originalPatter[x][y];
            }
        }
        return newPatter;
    }

    static void show(char[][] data) {
        System.out.println("\n------");
        for (int y = 0; y < n; y++) {
            for (int x = 0; x < n; x++) {
                System.out.print(data[x][y]);
            }
            System.out.println();
        }
        System.out.println("------");
    }

    static void input(char[][] to) {
        for (int row = 0; row < n; row++) {
            String line = scanner.nextLine();
            if (line.isEmpty()) {
                row--;
                continue;
            }
            char[] rowChars = line.toCharArray();
            int x = 0;
            for (char rowChar : rowChars) {
                to[x++][row] = rowChar;
            }
        }
    }
}

2024/12/28 15:18
加载中...