zoukankan      html  css  js  c++  java
  • 矩阵快速乘法---代码

    矩阵乘法的核心代码:

    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("随机数组如下:
    ");
         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("
    ");
         }
         printf("
    ");
         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);
         for(int i=0;i<3;i++)
         {
                 for(int j=0;j<3;j++)
                         printf("%8d",res.a[i][j]);
                 printf("
    ");
         }
         printf("
    ");
    }
    int main()
    {
        while(cin>>N)
        {
                init();
                calc(N);
        }
        return 0;
    }


  • 相关阅读:
    <<网络是怎样连接的>>笔记第一章browser生成message
    豆知识( DNS; HTTP入门;网络协议)
    日期和时间的操作
    类型转换
    分组查询
    存储过程
    触发器
    表连接
    变量
    union以及一些扩展
  • 原文地址:https://www.cnblogs.com/jasonkent27/p/4098455.html
Copyright © 2011-2022 走看看