矩阵总结

来源:互联网 发布:绿色自行车是什么软件 编辑:程序博客网 时间:2024/05/21 11:20

1:矩阵快速幂

#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;const int N=500;int n;struct Mat{int mat[N][N];};Mat operator *(Mat a,Mat b){Mat c;memset(c.mat,0,sizeof(c.mat));for(int k=0;k<n;k++){for(int i=0;i<n;i++){if(a.mat[i][k]<=0) continue;for(int j=0;j<n;j++){if(b.mat[k][j]<=0) continue;c.mat[i][j]+=a.mat[i][k]*b.mat[k][j];}}}return c;}Mat operator ^ (Mat a,int k){Mat c;for(int i=0;i<n;i++){for(int j=0;j<n;j++){c.mat[i][j]=(i==j);  //初始化为单位矩阵}}    while(k){if(k&1) c=c*a;a=a*a;k>>=1;}return c;}int main(){n=3;Mat a;for(int i=0;i<3;i++){for(int j=0;j<3;j++){a.mat[i][j]=2;}}a=a^2;for(int i=0;i<3;i++){ for(int j=0;j<3;j++) printf("%d  ",a.mat[i][j]); printf("\n");}return 0;}

2:待续


0 0