蓝桥杯练习BASIC-17 矩阵乘法
发布日期:2021-05-14 23:51:02 浏览次数:18 分类:精选文章

本文共 1882 字,大约阅读时间需要 6 分钟。

矩阵乘法与矩阵幂的问题

问题描述

要求完成一个矩阵乘法与矩阵幂的项目。给定一个n阶单位矩阵A(n×n),以及一个n阶矩阵B(n×n),需要计算A的m次幂,并将结果存储在矩阵C(n×n)中。每次乘法需要将结果赋值给A,执行m次循环。

代码实现

#include 
#include
#include
#define N 30
using namespace std;
int main()
{
int A[N][N], B[N][N], C[N][N];
int n, m;
while (cin >> n >> m)
{
// 初始化单位矩阵A
memset(A, 0, sizeof(A));
for (int i = 0; i < n; i++)
{
A[i][i] = 1;
}
// 读取矩阵B
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cin >> B[i][j];
}
}
// 进行m次矩阵乘法
while (m--)
{
// 初始化结果矩阵C
memset(C, 0, sizeof(C));
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
for (int k = 0; k < n; k++)
{
C[i][j] += A[i][k] * B[k][j];
}
}
}
// 赋值矩阵A为结果矩阵
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
A[i][j] = C[i][j];
}
}
}
// 输出结果矩阵A
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (j != n - 1)
{
cout << A[i][j] << " ";
}
else
{
cout << A[i][j];
}
}
cout << endl;
}
}
return 0;
}

代码解释

  • 矩阵初始化

    使用memset函数将矩阵A初始化为n阶单位矩阵。单位矩阵的对角线元素为1,其他元素为0。

  • 读取输入矩阵B

    用户通过输入方式读取矩阵B的元素。

  • 矩阵幂计算

    使用循环来执行m次矩阵乘法。每次乘法计算矩阵C并将结果赋值给矩阵A,确保A始终保存当前的矩阵乘积结果。

  • 输出结果

    每次循环结束后,输出矩阵A的当前状态。输出时格式化为n行n列,元素之间用空格或换行符分隔。

  • 该代码通过逐步初始化、输入处理、矩阵运算和结果输出,完成了矩阵乘法与矩阵幂的问题求解。

    上一篇:蓝桥杯练习BASIC-18 矩形面积交
    下一篇:蓝桥杯练习BASIC-30 阶乘计算

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年04月19日 22时46分49秒