Matrix Flipping Transformation


Submit solution

Points: 10 (partial)
Time limit: 1.0s
Memory limit: 64M

Authors:
Problem type
Allowed languages
Java 19, Java 8

題目說明

本題目要求實作一個矩陣轉換程式。使用者將輸入一個 3 x 3 的整數矩陣,輸入順序為由左至右、由上至下。接著使用者會輸入一個包含 4 個字元的指令字串,其中字元 v 代表進行垂直翻轉 Vertical Flip,字元 h 代表進行水平翻轉 Horizontal Flip。程式必須依照指令順序對矩陣進行多次操作,並輸出最終轉換後的矩陣結果。

  • 垂直翻轉 Vertical Flip 定義為:將矩陣的第一個 Row 與最後一個 Row 進行對調,中間的 Row 保持不變。

  • 水平翻轉 Horizontal Flip 定義為:將矩陣的第一個 Col 與最後一個 Col 進行對調,中間的 Col 保持不變。

本題目已經提供主程式框架,包含輸入處理、指令解析循環以及結果輸出。考生僅能實作 verticalFlip 與 horizontalFlip 這兩個函數,嚴禁修改 main 函數中的邏輯或變更現有的程式結構。

樣板程式碼如下:

import java.util.Scanner;

public class MatrixTransformer {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[][] matrix = new int[3][3];

        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                matrix[i][j] = sc.nextInt();
            }
        }

        String commands = "";
        for (int i = 0; i < 4; i++) {
            commands += sc.next();
        }

        for (int k = 0; k < commands.length(); k++) {
            char cmd = commands.charAt(k);
            if (cmd == 'v') {
                verticalFlip(matrix);
            } else if (cmd == 'h') {
                horizontalFlip(matrix);
            }
        }

        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.print(matrix[i][j]);
                if (j < matrix[i].length - 1) {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }

        sc.close();
    }

    public static ... verticalFlip(...) {
        // 建立暫存矩陣儲存結果
        // 用暫存矩陣複寫原始矩陣
    }

    public static void horizontalFlip(int[][] matrix) {
        // 建立暫存矩陣儲存結果
        // 用暫存矩陣複寫原始矩陣
    }
}

輸入值的格式

  1. 第一行包含 9 個整數,代表 3 x 3 矩陣的元素,數值範圍為 -2147483648 至 2147483647。

  2. 第二行包含一個長度為 4 的字串,僅由小寫字母 v 與 h 組成。

輸出值的格式

輸出為三行,每行包含 3 個整數,代表操作後的 3 x 3 矩陣。每個整數之間以一個半形空格分隔,每行末尾包含一個換行符號。

各種需要注意的邊界條件

  • 矩陣元素包含正數、負數與零。

  • 指令字串可能包含重複的指令,例如 vvvv。

  • 兩次相同的操作(如 vv 或 hh)會使矩陣恢復原狀。

  • 矩陣本身可能是對稱的,在這種情況下,特定的翻轉操作可能不會改變矩陣內容。

  • 操作順序會影響最終結果,必須嚴格依照字串由左至右的順序執行。

sample input1

1 2 3 4 5 6 7 8 9
v h v h

sample output1

1 2 3
4 5 6
7 8 9

sample input2

1 2 3 4 5 6 7 8 9
v v v h

sample output2

9 8 7
6 5 4
3 2 1

Comments

There are no comments at the moment.