题解 | #矩阵乘法#

矩阵乘法

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;
}
全部评论

相关推荐

ResourceUtilization:四六级不愧是大学最有用的证之一
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务