zoukankan      html  css  js  c++  java
  • 矩阵乘法模板

    View Code
    const int maxn = 22; //矩阵大小
    struct Matrix {
        int r, c; //矩阵大小
        int a[maxn][maxn];
        //初始化
        Matrix(int r,int c):r(r), c(c) {}
        void reset() {memset(a,0,sizeof(a));}
        //重写(),方便存取
        int& operator() (int i,int j) {return a[i][j];}
        //O(N^3) 矩阵乘法
        Matrix operator*(const Matrix&B) {
            Matrix M(r,B.c); M.reset();
            for(int i=0;i<r;i++) {
                for(int j=0;j<B.c;j++) {
                    for(int k=0;k<c;k++) {
                        M.a[i][j]=(M.a[i][j]+a[i][k]*B.a[k][j])%mod;
                    }
                }
            }
            return M;
        }
        Matrix operator^(int n) {
            Matrix M(r,c); M.reset();
            for(int i=0;i<r;i++) M(i,i)=1;
            Matrix A=*this;
            for(;n;n>>=1,A=A*A) if(n&1) M=A*M;
            return M;
        }
        void out() {
            for(int i=0;i<r;i++) {
                for(int j=0;j<c;j++) {
                    printf("%d ",a[i][j]);
                }
                printf("\n");
            }
        }
    };
  • 相关阅读:
    关于素数的具体问题
    Scala Apply
    Scala内部类
    Scala 类和对象
    Scala Tuple类型
    Scala数组
    sql server 游标
    表变量和临时表详解
    子查询详解
    EXEC 和 SP_EXECUTESQL的区别
  • 原文地址:https://www.cnblogs.com/zhang1107/p/3015074.html
Copyright © 2011-2022 走看看