Java 算法訓練 矩陣的乘法

題目:要求輸入兩個矩陣求出它們相乘的結果

輸入格式:第一行爲第一個矩陣的行和列,然後輸入這個矩陣,接下來一行輸入第二個矩陣的行和列接下來輸入第二個矩陣。

輸出格式:第三個矩陣

例如:

輸入:在這裏插入圖片描述

輸出:
在這裏插入圖片描述

代碼如下:

 public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int ai = scanner.nextInt(); // 矩陣a的行
        int aj = scanner.nextInt(); // 矩陣a的列
        int[][] a = new int[ai][aj];
        // 輸入矩陣a
        for (int i = 0; i < ai; i++) {
            for (int j = 0; j < aj; j++) {
                a[i][j] = scanner.nextInt();
            }
        }
        // 輸入矩陣b
        int bi = scanner.nextInt();  // 矩陣b的行
        int bj = scanner.nextInt();  // 矩陣b的列
        int[][] b = new int[bi][bj];
        for (int i = 0; i < bi; i++) {
            for (int j = 0; j < bj; j++) {
                b[i][j] = scanner.nextInt();
            }
        }
        int[][] c= new int[ai][bj];

        // 計算c (c爲矩陣a和矩陣b相乘)
        // sum爲矩陣c中的每一個數
        int sum = 0;
        // 理解矩陣相乘的規律
        // i控制行,j控制列,k爲相稱想加的參數
        for (int i = 0; i < ai; i++) {
            for (int j = 0; j < bj; j++) {
                for (int k = 0; k < bi; k++) {
                   sum = sum + a[i][k]*b[k][j];
                }
                c[i][j] = sum;
                sum = 0;   // sum初始化
            }
        }
        // 輸出矩陣c
        for (int i = 0; i < ai; i++) {
            for (int j = 0; j < bj; j++) {
                System.out.print(c[i][j]+" ");
            }
            System.out.println();
        }

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章