题解 | #矩阵乘法#
矩阵乘法
http://www.nowcoder.com/practice/ebe941260f8c4210aa8c17e99cbc663b
#include<bits/stdc++.h>
using namespace std;
//输出矩阵函数
void print_Array(vector<vector<int>>& vec){
for(int i = 0; i < vec.size(); i++){
for(int j = 0; j < vec[i].size(); j++){
cout << vec[i][j] << " ";
}
cout << endl;
}
}
//向量相乘函数(大小相同,为len)
int vector_multiply(int len, vector<int>& vec1, vector<int>& vec2){
int sum = 0;
for(int i = 0; i < len; i++){
sum += vec1[i] * vec2[i];
}
return sum;
}
int main(){
int x, y, z;
while(cin >> x >> y >> z){
vector<vector<int>> vec1(x, vector<int>(y, 0)); //矩阵1
vector<vector<int>> vec2(y, vector<int>(z, 0)); //矩阵2
vector<vector<int>> vec3(z, vector<int>(y, 0)); //矩阵2的转置矩阵
vector<vector<int>> vec4(x, vector<int>(z, 0)); //最终的矩阵
//输入矩阵1
for(int i = 0; i < x; i++){
for(int j = 0; j < y; j++){
int num;
cin >> num;
vec1[i][j] = num;
}
}
//输入矩阵2
for(int i = 0; i < y; i++){
for(int j = 0; j < z; j++){
int num;
cin >> num;
vec2[i][j] = num;
}
}
//矩阵2的转置矩阵
for(int i = 0; i < y; i++){
for(int j = 0; j < z; j++){
vec3[j][i] = vec2[i][j];
}
}
//矩阵相乘
for(int i = 0; i < x; i++){
for(int j = 0; j < z; j++){
vec4[i][j] = vector_multiply(y, vec1[i], vec3[j]);
}
}
//打印最终矩阵
print_Array(vec4);
}
return 0;
}