描述 |
原型: voidmatrix_multiply(int *m1,int *m2,int *r, int x, int y, int z); 输入参数: int *m1:x行y列的矩阵(array1[x][y]) int *m2:y行z列的矩阵(array2[y][z]) int x:矩阵m1的行数 int y:矩阵m1的列数/矩阵m2的行数 int z:矩阵m2的列数
输出参数: int *r:矩阵m1, m2相乘的结果(array3[x][z])
返回值: void
|
---|---|
知识点 | 循环,数组 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入说明: |
输出 | 输出两个矩阵相乘的结果 |
样例输入 | 2 2 2 3 8 8 0 9 0 18 9 |
样例输出 | 171 72 72 0 |
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int row1 = sc.nextInt();
int line1_row2 = sc.nextInt();
int line2 = sc.nextInt();
int[][] matrix1 = new int[row1][line1_row2];
int[][] matrix2 = new int[line1_row2][line2];
int[][] matrix = new int[row1][line2];
for (int i = 0; i < row1; i++)
for (int j = 0; j < line1_row2; j++)
matrix1[i][j] = sc.nextInt();
for (int i = 0; i < line1_row2; i++)
for (int j = 0; j < line2; j++)
matrix2[i][j] = sc.nextInt();
sc.close();
for (int i = 0; i < row1; i++) {
for (int j = 0; j < line2; j++) {
for (int k = 0; k < line1_row2; k++) {
matrix[i][j] += matrix1[i][k] * matrix2[k][j];
}
System.out.printf("%d", matrix[i][j]);
if (j < line1_row2 - 1)
System.out.print(" ");
}
if (i < row1 - 1)
System.out.println();
}
}
}