zoukankan      html  css  js  c++  java
  • 一个矩阵的类与矩阵连乘模板

    我的模板

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    
    const int maxsize=32;
    
    struct Matrix
    {
        int element[maxsize][maxsize];
        int size;
        int modulo;
    
        void init_matrix(int _size,int _modulo)
        {
            size=_size;
            modulo=_modulo;
            for (int i=0; i<_size; i++)
                for (int j=0; j<_size; j++)
                    element[i][j]=0;
        }
    
        Matrix operator*(Matrix param)
        {
            Matrix product;
            product.init_matrix(size,modulo);
            for (int i=0; i<size; i++)
                for (int j=0; j<size; j++)
                    for (int k=0; k<size; k++)
                    {
                        product.element[i][j]+=element[i][k]*param.element[k][j];
                        product.element[i][j]%=modulo;
                    }
            return product;
        }
    
        Matrix power(int exp)
        {
            Matrix tmp = (*this) * (*this);
            if (exp==1) return *this;
            else if (exp & 1) return tmp.power(exp/2) * (*this);
            else return tmp.power(exp/2);
        }
    
    };




    改造自Matrix67大神博客

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    
    const int maxsize=32;
    
    class CMatrix{
        public:
            int element[maxsize][maxsize];
            void setSize(int _size);
            void setModulo(int _modulo);
            CMatrix operator*(CMatrix param);
            CMatrix power(int exp);
        private:
            int size;
            int modulo;
    };
    
    void CMatrix::setSize(int _size)
    {
        for (int i=0;i<_size;i++)
            for (int j=0;j<_size;j++)
                element[i][j]=0;
        size=_size;
    }
    
    void CMatrix::setModulo(int _modulo)
    {
        modulo = _modulo;
    }
    
    CMatrix CMatrix::operator*(CMatrix param)
    {
        CMatrix product;
        product.setSize(size);
        product.setModulo(modulo);
        for (int i=0;i<size;i++)
            for (int j=0;j<size;j++)
                for (int k=0;k<size;k++)
                {
                    product.element[i][j]+=element[i][k]*param.element[k][j];
                    product.element[i][j]%=modulo;
                }
        return product;
    }
    
    CMatrix CMatrix::power(int exp)
    {
        CMatrix tmp = (*this) * (*this);
        if (exp==1) return *this;
        else if (exp & 1) return tmp.power(exp/2) * (*this);
        else return tmp.power(exp/2);
    }
    






  • 相关阅读:
    学习自建调试体系(二)
    寻找未导出函数的函数地址
    Http
    git忽略.gitignore
    Flask-sqlacodegen
    liunx速查
    BBS论坛项目
    vim操作
    部署
    python3 环境搭建
  • 原文地址:https://www.cnblogs.com/cyendra/p/3226289.html
Copyright © 2011-2022 走看看