题目描述
输入两个矩阵M1和M2,求M1和M2的和与积
输入
第一行输入整数m,代表两个方阵的大小,
接下来依次输入2*m行,每行包含m个整数。(第1-m行代表第一个方阵,第m+1 - 2*m行代表第二个方阵)
输出
数据不合法,输出“input error”
数据合法,这分别输出两个方阵的和与积(和方阵 与 积方阵 间隔空一行输出)
提示
矩阵加法规则:对应元素相加即可
矩阵乘法规则如下:
这样的描述过于抽象,我一开始无法理清算法思路,搜了很久看到了这篇博客
这样的图形解读帮助我更清晰地理解了矩阵乘法的算法,感谢 GGG_Yu
代码:
import java.util.*;
public class Main {
public static void main(String[]args){
try{
Scanner reader = new Scanner(System.in);
int m = reader.nextInt();
int [][]a = new int[m][m];
int [][]b = new int[m][m];
//逐个输入矩阵M1
for(int i=0;i<m;i++){
for(int j=0;j<m;j++){
a[i][j] = reader.nextInt();
}
}
//逐个输入矩阵M2
for(int i=0;i<m;i++){
for(int j=0;j<m;j++){
b[i][j] = reader.nextInt();
}
}
//和方阵
//矩阵加法:M1和M2对应元素相加
int [][]he = new int[m][m];
for(int i=0;i<m;i++){
for(int j=0;j<m;j++){
he[i][j] = a[i][j]+b[i][j];
System.out.print(he[i][j]+" ");
}
System.out.println();
}
System.out.println();
//积方阵
//矩阵乘法:第一个矩阵的第m行和第二个矩阵的第n列的乘积 之和
int [][]c = new int[m][m];//先定义出一个新的空数组,再把M1、M2按矩阵乘法得到积方阵的数
for(int i=0;i<m;i++){
for(int j=0;j<m;j++){
for(int k=0;k<m;k++){
c[i][j] += a[i][k]*b[k][j];
}
}
}
//逐个输出积方阵
for(int i=0;i<m;i++){
for(int j=0;j<m;j++){
System.out.print(c[i][j]+" ");
}
System.out.println();
}
}
catch(InputMismatchException e){
System.out.println("error input");
}
}
}