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);
    }
    






  • 相关阅读:
    图文详解——将本地项目上传到码云(gitee)远程仓库
    mysql 查询正在执行的sql
    MySql 缓冲池(buffer pool) 和 写缓存(change buffer) 转
    SQLserver 查询某个表的字段及字段属性
    FastDFS 客户端(二)
    FastDFS 服务器(一)
    C# WPF 正常的项目突然提示 当前上下文中不存在名称“InitializeComponent”
    C# 程序自动重启的解决方法
    Array知识点总结(一)
    JavaScript中为false的情况归档
  • 原文地址:https://www.cnblogs.com/cyendra/p/3226289.html
Copyright © 2011-2022 走看看