C++实现矩阵的m次方

xiaoxiao2021-02-28  57

矩阵乘法

问题描述   给定一个N阶矩阵A,输出A的M次幂(M是非负整数)   例如:   A =   1 2   3 4   A的2次幂   7 10   15 22 输入格式   第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数   接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值 输出格式   输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开 样例输入 2 2 1 2 3 4 样例输出 7 10

15 22

#include <cstdio> #include <iostream> using namespace std; #define max 35 int main() { int A[max][max]; int res[max][max]; int n,m; cin>>n>>m; for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j){ cin>>A[i][j]; res[i][j] = A[i][j]; } int i; int t; for(t = 0; t < m-1; ++t){ for( i = 0; i < n; ++i) for(int j = 0; j < n; ++j){ res[i][j] = 0; for(int k = 0; k < n; ++k) res[i][j] += A[i][k]*A[k][j]; } for(i = 0; i < n; ++i) for(int j = 0; j < n; ++j) A[i][j] = res[i][j]; } for(i = 0; i < n; ++i){ for(int j = 0; j < n; ++j) cout << (m == 0 ? (i == j ? 1 : 0) : res[i][j] ) << ' '; cout<<endl; } return 0; }

转载来自:http://blog.csdn.net/u012027907/article/details/21447447

转载请注明原文地址: https://www.6miu.com/read-59652.html

最新回复(0)