题解 | #矩阵乘法#
矩阵乘法
https://www.nowcoder.com/practice/ebe941260f8c4210aa8c17e99cbc663b
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { // 接收数据 x y z 矩阵A 矩阵B // 第一行包含一个正整数x,代表第一个矩阵的行数 int x = Integer.valueOf(in.nextLine()); // 第二行包含一个正整数y,代表第一个矩阵的列数和第二个矩阵的行数 int y = Integer.valueOf(in.nextLine()); // 第三行包含一个正整数z,代表第二个矩阵的列数 int z = Integer.valueOf(in.nextLine()); // 之后x行,每行y个整数,代表第一个矩阵的值 int[][] A = new int[x][y]; // x 行 for (int i = 0; i < x; i++) { // 每行 y 个整数 for (int j = 0; j < y; j++) { A[i][j] = in.nextInt(); } } // 之后y行,每行z个整数,代表第二个矩阵的值 int[][] B = new int[y][z]; // y 行 for (int i = 0; i < y; i++) { // 每行 z 个整数 for (int j = 0; j < z; j++) { B[i][j] = in.nextInt(); } } // 根据公式,计算矩阵C // 结果将是一个x行z列的矩阵C int[][] C = new int [x][z]; for (int i = 0; i < x; i++) { for (int j = 0; j < z; j++) { int res = 0; for (int k = 0; k < y; k++) { res += A[i][k] * B[k][j]; } // Cij C[i][j] = res; } } // 遍历输出结果矩阵C // 对于每组输入数据,输出x行,每行z个整数,代表两个矩阵相乘的结果 for (int i = 0; i < x; i++) { for (int j = 0; j < z; j++) { if (j == z - 1) { System.out.println(C[i][j]); } else { System.out.print(C[i][j] + " "); } } } } } }