刚做了一道矩阵快速幂的题,,,POJ 4474 Scout YYF I
深深的感受到了矩阵乘法的好处,因为结合律,使得算法的效率提升。
在网上看了一些矩阵的乘法之类的算法的代码,感觉一些写的很好,现将矩阵的一些相关代码收集一下。
//First time to use matrix in programming T_T
struct Matrix//矩阵定义,这里不是很好,,,只是个针对2*2的矩阵的类
{
double m[2][2];
};
Matrix Multiple(Matrix a, Matrix b)//矩阵乘法
{
Matrix c;
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 2; j++)
{
c.m[i][j] = 0;
for(int k = 0; k < 2; k++)
{
c.m[i][j] += a.m[i][k]*b.m[k][j];//矩阵乘法的乘法定义
}
}
}
return c;
}
Matrix Pow(Matrix a, Matrix b, int k)//矩阵快速幂运算,类似于整数的快速幂
{
while(k)
{
if(k&1)
{
b = Multiple(a, b);
}
a = Multiple(a, a);
k = k >> 1;
}
return b;
}
关的一些运算的实现代码总结一下。