矩阵乘法(2)【模板】

来源:互联网 发布:重庆交通干部网络学校 编辑:程序博客网 时间:2024/05/22 03:09

输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。

Input

 第一行,空格隔开的三个正整数m,s,n(均不超过200)。
  接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。
  接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。

Output

m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。

Sample Input

2 3 21 0 -11 1 -30 31 23 1

Sample Output

-3 2-8 2

Hint

矩阵C应该是m行n列,其中C(i,j)等于矩阵A第i行行向量与矩阵B第j列列向量的内积。
例如样例中C(1,1)=(1,0,-1)*(0,1,3) = 1 * 0 +0*1+(-1)*3=-3

Source

蓝桥杯算法训练


#include<stdio.h>  
#include<algorithm>  
#include<iostream>  
using namespace std;  
int main()  
{  
    int m,s,n;  
    while(scanf("%d %d %d",&m,&s,&n)!=EOF)  
    {  
        int a[210][210],b[210][210],c[210][210];  
        for(int i=0;i<m;i++)  
        {  
            for(int j=0;j<s;j++)  
            {  
                scanf("%d",&a[i][j]);  
            }  
  
        }  
  
        for(int i=0;i<s;i++)  
        {  
            for(int j=0;j<n;j++)  
            {  
                 scanf("%d",&b[i][j]);  
            }  
  
        }  
         for(int i=0;i<m;i++)  
         {  
              for(int j=0;j<n;j++)  
              {  
 c[i][j]=0;   //注意要初始化
                  for(int k=0;k<s;k++)  
  
                   c[i][j]+=a[i][k]*b[k][j];  
              }  
  
         }  
  
          for(int i=0;i<m;i++)  
          {  
              for(int j=0;j<n;j++)  
                 {  
                     if(!j) printf("%d",c[i][j]);  
                     else  
                     printf(" %d",c[i][j]);  
                 }  
                   printf("\n");  
          }  
}  
  
    return 0;  
}  

原创粉丝点击