题解 | #矩阵乘法#
矩阵乘法
https://www.nowcoder.com/practice/ebe941260f8c4210aa8c17e99cbc663b
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); String a; int[][] matrix1, matrix2, matrix3; int i = 0, j, v, m, n, k; try { a = r.readLine(); m = getDim(a); a = r.readLine(); n = getDim(a); a = r.readLine(); k = getDim(a); matrix1 = new int[m][n]; matrix2 = new int[n][k]; matrix3 = new int[m][k]; while ((a = r.readLine()) != null && !a.isEmpty()) { if (i < m) matrixInit(a, matrix1[i++]); else matrixInit(a, matrix2[i++ - m]); } } catch (IOException e) { throw new RuntimeException(e); } i = 0; while (i < m) { j = 0; while (j < k) { v = 0; while (v < n) { matrix3[i][j] += matrix1[i][v] * matrix2[v][j]; v++; } j++; } i++; } a = ""; i = 0; while (i < m) { j = 0; while (j < k) { if (j == k - 1) a = a + matrix3[i][j] + "\n"; else a = a + matrix3[i][j] + " "; j++; } i++; } System.out.print(a); } private static int getDim(String string) { char[] chs = string.toCharArray(); int i = 0, l = chs.length, n = 0; while (i < l) { n *= 10; n += chs[i] - '0'; i++; } return n; } private static void matrixInit(String a, int[] matrix) { char[] chs = a.toCharArray(); int i = 0, j = 0, l = chs.length, n = 0; while (i < l) { if (chs[i] == ' ') { matrix[j++] = n; n = 0; i++; continue; } n *= 10; n += chs[i] - '0'; if (i == l - 1) matrix[j] = n; i++; } } }