zoukankan      html  css  js  c++  java
  • 矩阵乘法

    Description

    给定两个矩阵$A$和$B$,你需要判断它们是否可以相乘,若可以请输出相乘后的矩阵。

    Input

    第一行输入一个整数$T$,代表有$T$组测试数据。

    每组数据第一行输入两个整数$N,M$,代表矩阵$A$的行、列。

    接下来$N$行,每行输入$M$个整数$a[][]$。

    之后一行输入两个整数$n,m$,代表矩阵$B$的行、列。

    接下来$n$行,每行输入$m$个整数$b[][]$。

    注:$1 <= T <= 500,1 <= N,m <= 100,1 <= M,n <= 10,1 <= $矩阵元素$<= 20$。

    Output

    若矩阵$A、B$可以相乘,先输出$YES$,再输出相乘得到的矩阵。

    对每行的矩阵元素,每两个元素之间有一个空格,最后一个没有空格。

    反之输出$NO$。

    Sample Input

    2
    2 2
    1 1
    1 1
    2 3
    1 1 1
    1 1 1
    2 3
    1 1 1
    1 1 1
    2 2
    1 1
    1 1 

    Sample Output

    YES
    2 2 2
    2 2 2
    NO 
    题解:矩阵能够相乘,必须满足左矩阵的列数等于右矩阵行数
    代码:
     1 #include<cstdio>
     2 int a[1005][1005],b[1005][1005],c[1005][1005];
     3 int main()
     4 {
     5     int T,N,M,n,m;
     6     scanf("%d",&T);
     7     while(T--)
     8     {
     9         scanf("%d %d",&N,&M);
    10         for(int i=0;i<N;i++)
    11           for(int j=0;j<M;j++)
    12               scanf("%d",&a[i][j]);
    13         scanf("%d %d",&n,&m);
    14         for(int i=0;i<n;i++)
    15           for(int j=0;j<m;j++)
    16               scanf("%d",&b[i][j]);
    17         if(M!=n) printf("NO
    ");
    18         else
    19         {
    20             
    21             printf("YES
    ");
    22             for(int i=0;i<N;i++)  //模板
    23             {
    24                 for(int j=0;j<m;j++)
    25                 {
    26                     int sum=0;
    27                     for(int k=0;k<M;k++)
    28                         sum+=a[i][k]*b[k][j];
    29                     c[i][j]=sum;    
    30                 }
    31             }
    32             for(int i=0;i<N;i++)
    33             {
    34                 for(int j=0;j<m;j++)
    35                     printf("%d%c",c[i][j],j==m-1?'
    ':' ');
    36             }
    37         }
    38                         
    39     }            
    40     return 0;
    41 }
  • 相关阅读:
    3.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——下载文件
    rem实现手机页面自动缩放
    Git 常用命令
    使用 canvas+JS绘制钟表
    JS 操作数组的方法
    Node.js Request方法
    兼容浏览器的点击事件
    ES6知识点
    上传项目到github上
    JavaScript 编码风格
  • 原文地址:https://www.cnblogs.com/hss-521/p/7357785.html
Copyright © 2011-2022 走看看