矩阵乘法

来源:互联网 发布:验证dss算法的有效性 编辑:程序博客网 时间:2024/06/13 08:42

题目描述

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

 

原型:

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

 

 


输入描述:

输入说明:1、第一个矩阵的行数2、第一个矩阵的列数和第二个矩阵的行数3、第二个矩阵的列数4、第一个矩阵的值5、第二个矩阵的值



输出描述:

输出两个矩阵相乘的结果


输入例子:
2223 88 09 018 9

输出例子:
171 7272 0
#include<iostream>  #include<string>  #include<algorithm>  using namespace std;int main(){int n, m, z;while (cin>>n>>m>>z)//按照矩阵乘法规则,一步步来即可{int **a = new int*[n];for (int i = 0; i < n; i++)a[i] = new int[m];int **b = new int*[m];for (int i = 0; i < m; i++)b[i] = new int[z];int **c = new int*[n];for (int i = 0; i < n; i++)c[i] = new int[z];for (int i = 0; i < n;i++)for (int j = 0; j < m; j++)//记得矩阵初始化为0a[i][j] = 0;for (int i = 0; i < m; i++)for (int j = 0; j < z; j++)b[i][j] = 0;for (int i = 0; i < n; i++)for (int j = 0; j < z; j++)c[i][j] = 0;for (int i = 0; i < n;i++)for (int j = 0; j < m; j++)cin >> a[i][j];for (int i = 0; i < m; i++)for (int j = 0; j < z; j++)cin >> b[i][j];for (int i = 0; i < n;i++)for (int j = 0; j < z; j++){for (int k = 0; k < m; k++)c[i][j] += a[i][k] * b[k][j];}for (int i = 0; i < n;i++)for (int j = 0; j < z; j++){if (j == z - 1)cout << c[i][j] << endl;else cout << c[i][j] << ' ';}}return 0;}



asd

0 0
原创粉丝点击