矩阵快速乘法---代码
2014-10-17 11:20
183 查看
矩阵乘法的核心代码:
然后是示例代码:
while(N) { if(N&1) res=res*A; n>>=1; A=A*A; }
然后是示例代码:
#include <cstdlib> #include <cstring> #include <cstdio> #include <iostream> using namespace std; int N; struct matrix { int a[3][3]; }origin,res; matrix multiply(matrix x,matrix y) { matrix temp; memset(temp.a,0,sizeof(temp.a)); for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { for(int k=0;k<3;k++) { temp.a[i][j]+=x.a[i][k]*y.a[k][j]; } } } return temp; } void init() { printf("随机数组如下:\n"); for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { origin.a[i][j]=rand()%10; printf("%8d",origin.a[i][j]); } printf("\n"); } printf("\n"); memset(res.a,0,sizeof(res.a)); res.a[0][0]=res.a[1][1]=res.a[2][2]=1; //将res.a初始化为单位矩阵 } void calc(int n) { while(n) { if(n&1) res=multiply(res,origin); n>>=1; origin=multiply(origin,origin); } printf("%d次幂结果如下:\n",n); for(int i=0;i<3;i++) { for(int j=0;j<3;j++) printf("%8d",res.a[i][j]); printf("\n"); } printf("\n"); } int main() { while(cin>>N) { init(); calc(N); } return 0; }
相关文章推荐
- 矩阵快速乘法---代码
- 稀疏矩阵的压缩存储及转置,快速转置法,C++代码实现
- POJ 3233 快速矩阵乘法
- srm#397_div1_500pt 矩阵乘法+快速模幂
- 矩阵的乘法和矩阵快速幂
- 【甘道夫】MapReduce实现矩阵乘法--实现代码
- 用Java的循环实现矩阵乘法代码
- HDU_4920_Matrix multiplication_杭电多校1010_矩阵乘法的代码风格
- MapReduce实现大矩阵乘法及代码实现
- 一个简单的矩阵乘法(快速幂)
- 2875: [Noi2012]随机数生成器 (矩阵乘法,快速幂,快速乘)
- POJ3070 Fibonacci ——矩阵乘法+快速幂——纪念我的第一道矩阵乘法
- poj 3070 Fibonacci + 矩阵乘法(矩阵快速幂)
- HLG 1126 Final Destination II 矩阵乘法+快速求幂
- srm#397_div1_500pt 矩阵乘法+快速模幂
- Strassen矩阵乘法 + 快速计算乘方的算法 + 矩阵的次幂
- zoj 3563 Alice's Sequence II__ZOJ Monthly, December 2011__矩阵的乘法和二进制快速幂
- poj 3070 Fibonacci(矩阵乘法快速幂)
- Fibonacci - POJ 3070 矩阵乘法快速幂
- ACM 矩阵乘法模板(T_T)+快速幂