public class Matrix {
int col,row,mod;
int [][]m;
Matrix(int r,int c,int _m){
this.col = c;
this.row = r;
this.mod = _m;
m = new int[row][];
for(int i=0;i<row;i++) {
m[i] = new int[col];
}
for(int i=0;i<row;i++) {
for(int j=0;j<col;j++) {
m[i][j] = 0;
}
}
}
Matrix(Matrix val){
this.col = val.col;
this.row = val.row;
this.mod = val.mod;
m = new int[row][];
for(int i=0;i<row;i++) {
m[i] = new int[col];
}
for(int i=0;i<row;i++) {
for(int j=0;j<col;j++) {
m[i][j] = 0;
}
}
}
void delMatrix() {
m = null;
}
Matrix Matrxadd(Matrix rht) {
Matrix temp=new Matrix(row, col, mod);
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
temp.m[i][j] = (m[i][j] + rht.m[i][j])%mod;
}
}
return temp;
}
Matrix Matrixmul(Matrix rht) {
Matrix temp=new Matrix(row, rht.col, mod);
for(int i = 0; i < row; i++){
for(int k = 0; k < rht.row; k++){
for(int j = 0; j < rht.col; j++){
temp.m[i][j] = (temp.m[i][j] + m[i][k]*rht.m[k][j])%mod;
}
}
}
return temp;
}
//static 不要轻易改动,如果运行不过,可以吧static 改成public 或者直接删除
Matrix Matrixpow(Matrix _m,int n) {
Matrix a=new Matrix(_m), res = new Matrix(_m.row, _m.col, _m.mod);
for(int i = 0; i < _m.row; i++){
res.m[i][i] = 1;
}
while(n > 0){
if(n%2==1) res = res.Matrixmul(a);
a = a.Matrixmul(a);
n >>= 1;
}
return res;
}
public static void main(String args[]) {
Matrix a = new Matrix(2,2,2);
}
}
java 矩阵运算模板(加法,乘法,幂乘)
猜你喜欢
转载自blog.csdn.net/qq_35821988/article/details/79902333
今日推荐
周排行