本文主要是介绍矩阵的方幂,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include<stdio.h>
#include<string.h>
#define N 10
int main(){int A[N][N],r[N][N],e[N][N],i,j,k,n,m,t=0;scanf("%d%d",&n,&m); //输入方阵的阶数,和幂次数 即 求n阶方阵的m次幂for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&A[i][j]);memset(e,0,sizeof(e));for(i=0;i<n;i++)e[i][i]=1;while(m--){ for(i=0;i<n;i++)for(j=0;j<n;j++){for(k=0;k<n;k++) //用t作为搬运工,作为某一行*某一列过程的中间t+=(e[i][k]*A[k][j]);r[i][j]=t; //而后赋值于人r[i][j]t=0; //继续下一个位置的搬运}for(i=0;i<n;i++) // 第一次 r=e*Afor(j=0;j<n;j++) // 第二次 r=e*A*A 因此将上一轮的结果带入下一轮e[i][j]=r[i][j]; // 即e=r}for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%d ",r[i][j]); printf("\n"); } return 0;
}
此处参考了:http://blog.csdn.net/rodestillfaraway/article/details/50529597
修改了矩阵乘法中间的部分过程
这篇关于矩阵的方幂的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!