@TOC实现两矩阵相乘运算
输入描述:输入两矩阵的行列数,以及矩阵的元素值;
输出描述:求取相乘后得到的结果矩阵C;
例如
A[M][K] * B[K][N] = C[M][N];
M=2, K=3, N=2
A=[1 2 3;1 2 3]
B=[1 1;1 1;1 1]
输入:
2 3 2
1 2 3
1 2 3
1 1
1 1
1 1
输出:
6 6
6 6
c++代码实现:
#include "pch.h"
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int M, K, N;
while (cin >> M >> K >> N)
{
vector<vector<int>>A;
vector<vector<int>>B;
vector<vector<int>>C;
vector<int>a;
for (int i = 0; i < M; i++) //输入矩阵A元素
{
for (int j = 0; j < K; j++)
{
int tmp;
cin >> tmp;
a.push_back(tmp);
}
A.push_back(a);
}
vector<int>b;
for (int i = 0; i < K; i++) //输入矩阵B元素
{
for (int j = 0; j < N; j++)
{
int tmp;
cin >> tmp;
b.push_back(tmp);
}
B.push_back(b);
}
vector<int>c(N, 0);
for (int i = 0; i < M; i++) //实现实现矩阵乘法运算
{
int sum = 0;
for (int j = 0; j < N; j++)
{
c[j] = 0;
for (int k = 0; k < K; k++)
{
c[j] += A[i][k] * B[k][j];
}
}
C.push_back(c);
}
for (int i = 0; i < M; i++) //输出A*B=C;
{
for (int j = 0; j < N; j++)
{
cout << C[i][j] << ' ';
}
cout << endl;;
}
}
return 0;
}
考试中由于迟到无法冷静思考,出来之后才调试成功,遗憾!!