任务描述
本关任务:编写一个程序,输入两个矩阵输出矩阵乘的结果。
矩阵乘法
矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数( column )和第二个矩阵的行数( row )相同时才有意义。
矩阵乘法的定义如下:
设A为 m×p 的矩阵,B为 p×n 的矩阵,那么称 m×n 的矩阵C为矩阵A与B的乘积,记作AB
编程要求
根据提示,在右侧编辑器补充代码,依次输入两个整数矩阵,输出矩阵乘法的结果,在输入矩阵时,先输入行列数,再输入矩阵。
测试说明
平台会对你编写的代码进行测试:
测试输入:
3 2
1 2
3 4
5 6
2 4
1 2 3 4
5 6 7 8
预期输出:
11 14 17 20
23 30 37 44
35 46 57 68
import java.util.Scanner; public class Multiply { public static void main(String[] args) { Scanner input = new Scanner(System.in); int[][] result = null; /********* Begin *********/ // 读取第一个矩阵的行列数 int m = input.nextInt(); int p = input.nextInt(); int[][] matrixA = new int[m][p]; for (int i = 0; i < m; i++) { for (int j = 0; j < p; j++) { matrixA[i][j] = input.nextInt(); } } // 读取第二个矩阵的行列数 int q = input.nextInt(); int n = input.nextInt(); int[][] matrixB = new int[q][n]; for (int i = 0; i < q; i++) { for (int j = 0; j < n; j++) { matrixB[i][j] = input.nextInt(); } } // 检查矩阵乘法是否合法 if (p != q) { System.out.println("矩阵乘法不合法"); return; } // 初始化结果矩阵 result = new int[m][n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < p; k++) { result[i][j] += matrixA[i][k] * matrixB[k][j]; } } } /********* End *********/ // 输出结果矩阵 for (int i = 0; i < result.length; i++) { for (int j = 0; j < result[i].length; j++) { System.out.print(String.format("%d ", result[i][j])); } System.out.println(); } } }