• L1-048. 矩阵A乘以B


    L1-048. 矩阵A乘以B

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    陈越

    给定两个矩阵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:
    2 3
    1 2 3
    4 5 6
    3 4
    7 8 9 0
    -1 -2 -3 -4
    5 6 7 8
    
    输出样例1:
    2 4
    20 22 24 16
    53 58 63 28
    
    输入样例2:
    3 2
    38 26
    43 -5
    0 17
    3 2
    -11 57
    99 68
    81 72
    
    输出样例2:
    Error: 2 != 3
    


    ps:记住矩阵相乘的公式就ok

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int main()
     4 {
     5     int ra,ca,rb,cb;
     6     scanf("%d %d",&ra,&ca);
     7     int A[ra][ca];
     8     for(int i=0; i<ra; i++)
     9     {
    10         for(int j=0; j<ca; j++)
    11         {
    12             int x;
    13             scanf("%d",&x);
    14             A[i][j]=x;
    15         }
    16     }
    17     scanf("%d %d",&rb,&cb);
    18     int B[rb][cb];
    19     for(int i=0; i<rb; i++)
    20     {
    21         for(int j=0; j<cb; j++)
    22         {
    23             int x;
    24             scanf("%d",&x);
    25             B[i][j]=x;
    26         }
    27     }
    28     if(ca!=rb)
    29     {
    30         printf("Error: %d != %d
    ",ca,rb);
    31         return 0;
    32     }
    33     int C[ra][cb];
    34     for(int i=0;i<ra;i++)
    35     {
    36         for(int j=0;j<cb;j++)
    37         {
    38             C[i][j]=0;
    39         }
    40     }
    41     for(int i=0; i<ra; i++)
    42     {
    43         for(int j=0; j<cb; j++)
    44         {
    45             for(int k=0; k<ca; k++)
    46             {
    47                 C[i][j]=C[i][j]+A[i][k]*B[k][j];
    48             }
    49         }
    50     }
    51     printf("%d %d
    ",ra,cb);
    52     for(int i=0; i<ra; i++)
    53     {
    54         printf("%d",C[i][0]);
    55         for(int j=1; j<cb; j++)
    56         {
    57             printf(" %d",C[i][j]);
    58         }
    59         printf("
    ");
    60     }
    61     return 0;
    62 }


  • 相关阅读:
    DES、RC4、AES等加密算法优势及应用
    Jupyter Notebook 快捷键
    python 清华镜像pip install
    anaconda下载 (清华镜像)
    pycharm 授权/激活
    python序列中添加高斯噪声
    python 如何在一个.py文件中调用另一个.py文件的类
    pycharm 变量批量重命名
    pycharm常用快捷键
    C++中获取时间
  • 原文地址:https://www.cnblogs.com/yinbiao/p/8659504.html
Copyright © 2020-2023  润新知