题解 | #矩阵乘法#
矩阵乘法
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++;
}
}
}

