题目描述
-
如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的:
原型:
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
输入描述:
输入说明: 1、第一个矩阵的行数 2、第一个矩阵的列数和第二个矩阵的行数 3、第二个矩阵的列数 4、第一个矩阵的值 5、第二个矩阵的值
输出描述:
输出两个矩阵相乘的结果
输入例子:
2
2
2
3 8
8 0
9 0
18 9
输出例子:
171 72
72 0
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
while(scan.hasNext())
{
int row1=scan.nextInt(); //第一个矩阵的行
int column1=scan.nextInt(); //第一个矩阵的列
int row2=column1; //第二个矩阵的行
int column2=scan.nextInt(); //第二个矩阵的列
int[][] num1=new int[row1][column1];//定义一个数组接收第一个矩阵
int[][] num2=new int[row2][column2];//定义一个数组接收第二个矩阵
int[][] result=new int[row1][column2];//定义一个数组储存计算结果
//接收输入的矩阵
for(int i=0;i<row1;i++){
for(int j=0;j<column1;j++){
num1[i][j]=scan.nextInt();
}
}
for(int i=0;i<row2;i++){
for(int j=0;j<column2;j++){
num2[i][j]=scan.nextInt();
}
}
//计算并赋值
for(int i=0;i<row1;i++){
for(int j=0;j<column2;j++){
for(int k=0;k<column1;k++){
result[i][j] += num1[i][k]*num2[k][j];
}
}
}
//输出结果
for(int i=0;i<row1;i++ ){
for (int j=0;j<column2;j++){
if(j==column2-1)
System.out.print(result[i][j]);
else
System.out.print(result[i][j]+" ");
}
System.out.println();
}
}
}
}