以下是本节涉及的知识点:
- 矩阵乘法
- 二维数组
- 三重for循环以及常用的计数变量
本节跟前面两节相比,量不大,但是会比较难,因为矩阵乘法涉及到三重循环,难在我们是如何分析得到这三重循环以及这三重循环怎么写。同时还涉及到二维数组,如果稍有不注意很可能会晕。
我们还是从一个基本的情景开始:
(佟强作业题改)初始化两个二维矩阵A和B,其中A是一个M*N的矩阵,B是N*P的矩阵(其中M、N、P均为某个常数,我们假定M=3,N=4,P=2),矩阵里面的数字均为整数,计算矩阵C=AB,并输出矩阵C。
佟强作业题原题会比现在这个版本简单,但是原题还涉及到数组指针和函数,在这里都省略了。
首先我们来补充一下基本的矩阵乘法的知识:
二维矩阵:一个数表,M*N
的矩阵表示一个M行N列的数阵
,其中有M*N
个数。
矩阵乘法:两个矩阵的乘法为:当第一个矩阵的列数等于第二个矩阵的行数时才能进行。对于题目中的A
B
矩阵来说,刚好满足这个关系,则乘积为C
,C
为一个M*P
的矩阵。
C
中的第i行第j列元素
可以表示为:
c i j = ∑ k = 1 N a i k b k j c_{ij}=\sum_{k=1}^N a_{ik} b_{kj} cij=k=1∑Naikbkj
即C
中的第i行第j列元素
为A
矩阵i行
与B
矩阵j列
的每个对应元素乘积之和。
比如:
C = A B = ( 1 2 3 4 5 6 ) ( 1 4 2 5 3 6 ) = ( 1 × 1 + 2 × 2 + 3 × 3 1 × 4 + 2 × 5 + 3 × 6 4 × 1 + 5 × 2 + 6 × 3 4 × 4 + 5 × 5 + 6 × 6 ) = ( 14 32 32 77 ) C=AB=\begin{pmatrix}1 & 2 & 3\\4 & 5 & 6\end{pmatrix}\begin{pmatrix}1 & 4