1050.矩阵乘法

本文最后更新于 2023年9月16日 早上

NOI CCF 1050.矩阵乘法

题目描述 计算两个矩阵的乘法。nm阶的矩阵A乘以mk阶的矩阵B得到的矩阵C 是n*k阶的,且C[i][j] =A[i][0]*B[0][j] + A[i][1]*B[1][j] + …… +A[i][m-1]*B[m-1]j

输入 第一行为n, m, k,表示A矩阵是n行m列,B矩阵是m行k列,n, m,k均小于100;然后先后输入A和B两个矩阵,A矩阵n行m列,B矩阵m行k列,矩阵中每个元素的绝对值不会大于100。

输出 输出矩阵C,一共n行,每行k个整数,整数之间以一个空格分开。 分析:由定义可得:C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + ……+A[i][m-1]*B[m-1][j](C[i][j],因此每次计算C[i][j]时可以枚举k=0~m-1,计算的和。

样例输入 2 3 2 1 2 3 2 1 4 1 2 2 1 3 2

样例输出 14 10 16 13

题目分析

分别存储两个矩阵,按照题目给出算法计算积和


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
#include<iostream>
using namespace std;

int main()
{
int n,m,k,A[105][105],B[105][105];
cin >> n >> m >> k;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
cin >> A[i][j];
}
}
for(int i = 1;i <= m;i++){
for(int j = 1;j <= k;j++){
cin >> B[i][j];
}
}
int l;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= k;j++){
l = 0;
for(int h = 1;h <= m;h++){
l += A[i][h] * B[h][j];
}
cout << l << ' ';
}
cout << endl;
}
return 0;
}

1050.矩阵乘法
https://www.harkerhand.online/CCF-NOI/1050/
作者
harkerhand
发布于
2020年4月18日
更新于
2023年9月16日
许可协议