一、概念
矩阵(martrix)是由n行m列数字构成的数表。
记:
矩阵中第i行第j列的元素可记为。
二、矩阵的运算
加法:行数列数均相等的两个矩阵,对应位置的数分别加减。
乘法(与数值相乘):所有元素都乘以这个数值。
乘法(矩阵相乘):
设,
则,且
行数相等的两个矩阵,矩阵C中第i行第j列元素的计算方式:取出矩阵A中的第i行与矩阵B中的第j列,对应项相乘再相加。
满足结合律与对加法的交换律:
三、定义
矩阵结构体储存:
struct martrix
{
int n,m,a[N][N];
} A,B;
//矩阵乘法(矩阵相乘)实现:
for (int i=1;i<=n;i++)
{
for (int k=1;k<=m;k++)
{
for (int j=1;j<=p;j++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}
时间复杂度O(nmp)。
四、一些特殊操作
1 矩阵倒置:也称行列转换,记
的转换矩阵为![A^T](https://latex.csdn.net/eq?A%5ET)
2 斐波那契数列
一般推算:
优化至O(logn):
3 定长路径数量
一共个点的有向图中,边长相同,存在重边。给定
,求所有点对之间长度为
路径数量。
设其邻接矩阵为,其中
表示
指向
的边数,答案为
。