//题目:矩阵相乘
//给定两个矩阵 A 和 B,它们的维度分别是 m×n 和 n×p,编写一个函数实现矩阵相乘的功能,并返回结果矩阵。
//
//问题函数定义:
//
//cpp
//vector<vector<int>> matrixMultiply(vector<vector<int>>& A, vector<vector<int>>& B)
//函数接受两个二维向量 A 和 B 作为参数,表示两个矩阵。函数返回一个二维向量,表示相乘后的结果矩阵。
//
//裁判测试程序样例:
//
//cpp
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> matrixMultiply(vector<vector<int>>& A, vector<vector<int>>& B) {
vector<vector<int>> m;
//先判断是否可以相乘
int a1 = A.size();
if (!a1)return m;
int a2 = A[0].size();
if (!a2)return m;
int b1 = B.size();
if (!b1)return m;
int b2 = B[0].size();
if (!b2)return m;
if (a2 != b1)return m;//A列数等于B行数
m.resize(a1, vector<int>(b2, 0));//重新调整结果矩阵的大小
for (int i = 0; i < a1; i++) {
for (int j = 0; j < b2; j++) {
for (int w = 0; w < a2; w++) {
m[i][j] += A[i][w] * B[w][j];//A第i行和B第j列元素依次相乘并累加
}
}
}
return m;
}
void printMatrix(const vector<vector<int>>& matrix) {
for (const auto& row : matrix) {
for (int num : row) {
cout << num << " ";
}
cout << endl;
}
}
int main() {
vector<vector<int>> A = { {1, 2, 3},
{4, 5, 6} };
vector<vector<int>> B = { {7, 8},
{9, 10},
{11, 12} };
vector<vector<int>> result = matrixMultiply(A, B);
cout << "Result matrix:" << endl;
printMatrix(result);
return 0;
}
//输入样例:
//
//略
//输出样例:
//
//Result matrix :
//58 64
//139 154