基础训练:矩阵乘法&矩阵的m次幂
【摘要】 问题描述
给定一个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,输出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次幂所对应的矩阵。相邻的数之间用一个空格隔开
程序清单
#include <iostream>
#include <vector>
using namespace std;
int N=0,M=0;
//函数 MulMatrix()实现矩阵M1*M2
vector<vector <int> > MulMatrix(vector<vector <int> > M1, vector<vector <int> > M2)
{
vector<vector <int> > Mul(N, vector<int>(N,0));
for(int i=0; i<N; i++)
for(int j=0; j<N; j++) for(int k=0; k<N; k++) { Mul[i][j]+=M1[i][k]*M2[k][j]; }
return Mul;
}
//函数ReMulMatrix()实现矩阵A的m次幂
vector <vector <int> > ReMulMatrix(vector <vector <int> > A, int m)
{
vector<vector <int> > ResultMatrix(N, vector<int>(N,0));
for(int i=0; i<N; i++) //初始化ResultMatrix为单位矩阵 for(int j=0; j<N; j++) { if(i==j) ResultMatrix[i][j]=1; }
if(m==0)
{
return ResultMatrix; //零次幂为单位矩阵
}
else if(m==1)
return A; //1次幂为原矩阵
else while(m!=0) { ResultMatrix=MulMatrix(ResultMatrix, A); m--;
}
return ResultMatrix;
}
int main()
{
cin>>N; //N=1-30
cin>>M; //M=0-5
//初始化输入a、输出b为包含N个vector<int>的容器,且每个vector<int>包含N个0
vector<vector<int> > Output(N, vector<int>(N,0)), a(N, vector<int>(N,0));
//输入
for(int i=0; i<N; i++)
for(int j=0; j<N; j++)
{ cin>>a[i][j];
} //计算
Output = ReMulMatrix(a, M);
// 输出
for(int i=0; i<N; i++)
{
for(int j=0; j<N; j++)
{ cout<<Output[i][j]<<" ";
} cout<<endl;
}
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
测试效果
文章来源: ai-wx.blog.csdn.net,作者:AI 菌,版权归原作者所有,如需转载,请联系作者。
原文链接:ai-wx.blog.csdn.net/article/details/104643412
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)