【HPUvjudge】矩阵乘法

本文介绍矩阵乘法的基本规则,包括结合律和不满足交换律的特点,并通过一个具体的编程实例展示了如何判断两个矩阵是否可以相乘及相乘的具体过程。

http://acm.hpu.edu.cn/vjudge/contest/view.action?cid=7#problem/B

B - 矩阵乘法
Time Limit:1000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu
Submit

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

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

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

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

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

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

注: 1<=T<=5001<=N,m<=1001<=M,n<=101<= 矩阵元素 <=20

Output
若矩阵 AB 可以相乘,先输出 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

矩阵乘法:只有当矩阵A的列数与矩阵B的行数相等时A*B才有意义。
矩阵乘法满足结合律,但不满足交换律
两矩阵乘积得到的新矩阵行数等于左边矩阵的行数,列数数等于右边矩阵的列数.
矩阵乘法运算不满足交换律,AB称为A左乘B,B右乘A;即:AB!=BA
BA=0不能得出A=0或B=0,但有时也会有例外

结合律:(AB)C=A(BC)
分配律:(A+B)C=AC+BC

#include<stdio.h>
int main()
{
    int m,s,n,k,T;
    scanf("%d",&T);
    while(T--)
    {
        int a[111][11],b[11][111];
        scanf("%d%d",&m,&n);
        for(int i=0;i<m;i++)
            for(int j=0;j<n;j++)
                scanf("%d",&a[i][j]);
        scanf("%d%d",&s,&k);
        for(int i=0;i<s;i++)
            for(int j=0;j<k;j++)
                scanf("%d",&b[i][j]);
        if(n!=s)  
        {
            printf("NO\n");
        }
        else 
        {
            printf("YES\n");
            int t,r;
            for(int i=0;i<m;i++)
            {
                for(int j=0;j<k;j++)
                {
                    r=0;
                    t=0;
                    while(t!=s)
                    {
                        r+=a[i][t]*b[t][j];
                        t++;
                    }
                    printf("%d",r);
                    if(j<k-1) printf(" ");
                }
                printf("\n");
            }
        }
    }
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值