华为oj初级 矩阵乘法

    xiaoxiao2021-03-25  115

    描述 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的: 2.bmp

    原型: voidmatrix_multiply(int *m1,int *m2,int *r, int x, int y, int z); 输入参数: int *m1:x行y列的矩阵(array1[x][y]) int *m2:y行z列的矩阵(array2[y][z]) int x:矩阵m1的行数 int y:矩阵m1的列数/矩阵m2的行数 int z:矩阵m2的列数

    输出参数: int *r:矩阵m1, m2相乘的结果(array3[x][z])

    返回值: void

    知识点 循环,数组 运行时间限制 10M 内存限制 128 输入 输入说明: 1、第一个矩阵的行数 2、第一个矩阵的列数和第二个矩阵的行数 3、第二个矩阵的列数 4、第一个矩阵的值 5、第二个矩阵的值 输出 输出两个矩阵相乘的结果 样例输入 2 2 2 3 8 8 0 9 0 18 9 样例输出 171 72 72 0

    #include <iostream> #include<vector> #include<algorithm> #include<string> using namespace std; int main(){ int m, n, p; cin >> m >> n >> p; vector<vector<int>> v1(m, vector<int>(n)); vector<vector<int>> v2(n, vector<int>(p)); vector<vector<int>> v(m, vector<int>(p)); for (int i = 0; i < m; i++){ for (int j = 0; j < n; j++) cin >> v1[i][j]; } for (int i = 0; i < n; i++){ for (int j = 0; j < p; j++) cin >> v2[i][j]; } for (int i = 0; i < m; i++){ for (int j = 0; j < p; j++){ for (int k = 0; k < n; k++) v[i][j] += v1[i][k] * v2[k][j]; } } for (int i = 0; i < m; i++){ for (int j = 0; j < p-1; j++) cout << v[i][j] << " "; cout << v[i][p - 1] << endl; } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-19148.html

    最新回复(0)