学习参考:1、Java实现矩阵相乘
https://blog.csdn.net/ares_xxm/article/details/72232467
2、java小练习(矩阵相乘)
https://blog.csdn.net/wfzczangpeng/article/details/8039850
3、题目要求:
输入1、矩阵阶数n
2、第一个n阶矩阵
3、第二个n阶矩阵
输出2个矩阵的乘积。
例如输入:
3
1 2 3
1 2 3
1 2 3
3 2 1
3 2 1
3 2 1
输出:
18 12 6
18 12 6
18 12 6
思路分析:
考虑AB=C,其中A(R,N), B(N,M), C(R,M)为矩阵。
作者:whitefang
链接:https://www.zhihu.com/question/21351965/answer/727385709
算法实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 获取输入参数
Object[] inputs = getInputs();
// 矩阵相乘运算
Integer n = (Integer) inputs[0];
Integer a[][] = (Integer[][]) inputs[1];
Integer b[][] = (Integer[][]) inputs[2];
int c[][] = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
c[i][j] += a[i][k] * b[k][j];
}
if(j < (n-1)) {
System.out.print(c[i][j] + " ");
}else {
System.out.print(c[i][j]);
}
}
System.out.println("");
}
}
public static Object[] getInputs() {
Scanner input = new Scanner(System.in);
Integer n = input.nextInt();
if(n <= 0) {
System.out.println("Input number must great than 0, not " + n);
return new Object[] {};
}
Integer a[][] = new Integer[n][n];
Integer b[][] = new Integer[n][n];
// 跳过n后面的换行符
input.nextLine();
// 获取矩阵a[][]的内容
for (int i = 0; i < n; i++) {
String strLine = input.nextLine();
Scanner s = new Scanner(strLine);
int j = 0;
while (s.hasNextInt() && j < n ) {
a[i][j++] = s.nextInt();
}
}
// 获取矩阵b[][]的内容
for (int i=0; i<n; i++) {
String strLine = input.nextLine();
Scanner s = new Scanner(strLine);
int j = 0;
while (s.hasNextInt() && j<n ) {
b[i][j++] = s.nextInt();
}
}
return new Object[] {n, a, b};
}
}
验证:
4参考:矩阵的乘法算法
https://www.cnblogs.com/wuyudong/p/matrix-multiply.html