lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1. 题目

读题

 HJ69 矩阵乘法

 

考查点

 

首先,你需要了解矩阵乘法的定义和运算规则。

矩阵乘法是一种将两个矩阵相乘的运算,得到一个新的矩阵。矩阵乘法的基本要求是,左边矩阵的列数必须等于右边矩阵的行数,否则无法进行乘法。

矩阵乘法的结果是一个新的矩阵,其行数等于左边矩阵的行数,列数等于右边矩阵的列数。

矩阵乘法的具体步骤是,将左边矩阵的每一行与右边矩阵的每一列对应相乘,并将结果相加,得到新矩阵的对应元素。

其次,你需要编写一个程序来实现矩阵乘法的功能。你可以选择你喜欢的编程语言,如C++、Python、Java等。你需要定义一个函数或方法,接收两个参数,分别表示两个矩阵。你需要检查两个矩阵是否满足乘法的条件,如果不满足,你可以返回一个错误信息或异常。如果满足,你需要创建一个新的矩阵,用一个双重循环来计算每个元素的值,并将结果返回。

最后,你需要测试你的程序是否正确。你可以用一些简单的例子来验证你的程序是否能够正确地进行矩阵乘法。例如,你可以用以下两个矩阵作为输入:

A = [[1, 2], [3, 4]] B = [[5, 6], [7, 8]]

根据矩阵乘法的定义和运算规则,你应该得到以下输出:

C = [[19, 22], [43, 50]]

你可以用[这个在线计算器]来验证你的答案。

如果你想了解更多关于矩阵乘法的概念和性质,你可以参考[这篇文章]。这篇文章介绍了矩阵乘法的定义、运算规则、性质和应用。

2. 解法

思路

 

代码逻辑

 

具体实现

 

public class HJ069 {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m1 = Integer.parseInt(sc.nextLine());
int n1 = Integer.parseInt(sc.nextLine());
int m2 = n1;
int n2 = Integer.parseInt(sc.nextLine());

int[][] a = new int[m1][n1];
int[][] b = new int[m2][n2];

for (int i = 0; i < m1; i++) {
String[] lines = sc.nextLine().split("\\s+");
for (int j = 0; j < n1; j++) {
a[i][j] = Integer.parseInt(lines[j]);
}

}
for (int i = 0; i < m2; i++) {
String[] lines = sc.nextLine().split("\\s+");
for (int j = 0; j < n2; j++) {
b[i][j] = Integer.parseInt(lines[j]);
}

}

int[][] ans = multiply(a, b);
int m3 = ans.length;
int n3 = ans[0].length;
for (int i = 0; i < m3; i++) {
for (int j = 0; j < n3; j++) {
System.out.print(ans[i][j]);
System.out.print(" ");
}
System.out.println();
}
}

public static int[][] multiply(int[][] a, int[][] b) {
if (a[0].length != b.length) {
return null;
}

int[][] c = new int[a.length][b[0].length];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b[0].length; j++) {
for (int k = 0; k < a[0].length; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}

return c;
}
}

3. 总结

posted on 2023-07-27 17:49  白露~  阅读(118)  评论(0编辑  收藏  举报