L1-048 矩阵A乘以B (15 分)

简介: L1-048 矩阵A乘以B (15 分)

给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有Ra行、Ca列,B有Rb行、Cb列,则只有Ca与Rb相等时,两个矩阵才能相乘。


输入格式:

输入先后给出两个矩阵A和B。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给出C个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数,并且所有整数的绝对值不超过100。


输出格式:

若输入的两个矩阵的规模是匹配的,则按照输入的格式输出乘积矩阵AB,否则输出Error: Ca != Rb,其中Ca是A的列数,Rb是B的行数。


输入样例1:

1. 2 3
2. 1 2 3
3. 4 5 6
4. 3 4
5. 7 8 9 0
6. -1 -2 -3 -4
7. 5 6 7 8

结尾无空行


输出样例1:

1. 2 4
2. 20 22 24 16
3. 53 58 63 28

结尾无空行


输入样例2:

1. 3 2
2. 38 26
3. 43 -5
4. 0 17
5. 3 2
6. -11 57
7. 99 68
8. 81 72


输出样例2:

Error: 2 != 3

b0469997a20248b1bb5d7fabde9b9e09.png


样例解释 :a[0][0]=1*7+2*(-1)+3*5=20,a[0][1]=1*8+2*(-2)+3*6=22

                  a[0][2]=1*9+2*(-3)+3*7=24,a[0][3]=1*0+2*(-4)+3*8=16

                  a[1][0]=4*7+5*(-1)+6*5=53,a[1][1]=4*8+5*(-2)+6*6=63

                  a[1][2]=4*9+5*(-3)+6*7=63,a[1][3]=4*0+5*(-4)+6*8=28


#include<iostream>
using namespace std;
const int N=110;
int A[N][N],B[N][N];
int main()
{
    int a,b,c,d;
    cin>>a>>b;
    for(int i=0;i<a;i++)
        for(int j=0;j<b;j++)
            cin>>A[i][j];
    cin>>c>>d;
    for(int i=0;i<c;i++)
        for(int j=0;j<d;j++)
            cin>>B[i][j];
    if(b!=c) printf("Error: %d != %d",b,c);
    else
    {
        cout<<a<<' '<<d<<endl;
        for(int i=0;i<a;i++)//控制行
        {
            for(int j=0;j<d;j++)//控制列
            {
                int sum=0;
                for(int k=0;k<b;k++)
                {
                    sum+=A[i][k]*B[k][j];//矩阵的运算
                }
                if(j) cout<<' ';//控制空格
                cout<<sum;
            }
            cout<<endl;
        }
    }
    return 0;
}



目录
相关文章
|
5月前
|
算法 Java
求多个数的最大公约数及比例化简
求多个数的最大公约数及比例化简
43 1
|
7月前
|
算法 BI 测试技术
【唯一分解定理 数学】1808好因子的最大数目
【唯一分解定理 数学】1808好因子的最大数目
|
7月前
L1-048 矩阵A乘以B
L1-048 矩阵A乘以B
59 0
|
自然语言处理 算法 Python
利用函数求出一个数组最大三个数的乘积
利用函数求出一个数组最大三个数的乘积
121 0
7-93 矩阵A乘以B
7-93 矩阵A乘以B
129 0
使用格里高利公式求π的近似值,要求精确到最后一项的绝对值小于10–4
使用格里高利公式求π的近似值,要求精确到最后一项的绝对值小于10–4
使用格里高利公式求π的近似值,要求精确到最后一项的绝对值小于10–4
L2-018 多项式A除以B (25 分)(数组模拟)
L2-018 多项式A除以B (25 分)(数组模拟)
184 0
L2-018 多项式A除以B (25 分)(数组模拟)
给你一组数,求出其中两两最大公约数中最大的值
给你一组数,求出其中两两最大公约数中最大的值
68 0
L1-036 A乘以B (5 分)
L1-036 A乘以B (5 分)
99 0
h0039. 平方数 (15 分)
h0039. 平方数 (15 分)
136 0