矩阵乘法
问题描述 给定一个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