编程实战の计蒜客 矩阵乘法

来源:互联网 发布:旺旺聊天软件下载 编辑:程序博客网 时间:2024/06/05 18:50

题目

给定一个 m 行、n列的矩阵 A和一个 n行、m 列的矩阵 B。你需要用矩阵 A 与矩阵 B 相乘,并且将 m行 m 列的乘积结果输出。
例如,对于矩阵 A =

[453612]
和矩阵 B =
455216

​​ 他们的乘积会是
[36601728]

输入格式:
测评机会反复运行你写的程序。每次程序运行时,首先在第一行输入 2 个整数,分别对应题目描述中的 m 和 n(1≤m,n≤10),两个整数之间用一个空格分隔。

接下来 m 行,每行包含 n 个整数,每两个整数之间用一个空格分隔。对应 m 行 n 列的矩阵 A。

再接下来 n 行,每行包含 m 个整数,每两个整数之间用一个空格分隔。对应 n 行 m 列的矩阵 B。

注:矩阵中的整数均大于等于 -100,小于等于 100。

输出格式:

输出包括 m 行,每行包含 m 个整数,对应矩阵 AA 乘矩阵 BB 的结果。

每两个整数之间一个空格,每行最后一个整数后面没有空格。

样例输入1

2 22 33 13 24 3

样例输出1

18 1313 9

样例输入2

2 31 2 33 4 61 23 45 6

样例输出2

22 2845 58

样例输入3

3 21 23 45 61 2 33 4 6

样例输出3

7 10 1515 22 3323 34 51

解:

AC代码

#include <iostream>#include <vector>using namespace std;int main() {    int m;    int n;    cin>>m>>n;    int temp;    vector<vector<int>> matrix_a(m);    vector<vector<int>> matrix_b(n);    vector<vector<int>> matrix_c(m);    for(int i=0;i<m;i++) //输入矩阵A    {        for(int j=0;j<n;j++)        {            int input;            cin>>input;            matrix_a[i].push_back(input);        }    }    for(int i=0;i<n;i++) //输入矩阵B    {        for(int j=0;j<m;j++)        {            int input;            cin>>input;            matrix_b[i].push_back(input);        }    }    for(int i=0;i<m;i++)//计算模块    {        for(int j=0;j<m;j++)        {            int input=0;            for(int x=0;x<n;x++)//按行计算矩阵的结果            {                input += matrix_a[i][x]*matrix_b[x][j];//对应行列元素相乘并相加得到对应输出矩阵元素            }            matrix_c[i].push_back(input);        }      }    for(int i=0;i<m;i++)//输出模块    {        for(int j=0;j<m;j++)        {            if(j<m-1) cout<<matrix_c[i][j]<<" ";            else cout<<matrix_c[i][j];        }        cout<<endl;    }    return 0;}
原创粉丝点击