矩阵乘法

题目描述

  • 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的:

 

原型:

voidmatrix_multiply(int *m1,int *m2,int *r, int x, int y, int z);

输入参数:

    int *m1:x行y列的矩阵(array1[x][y])

    int *m2:y行z列的矩阵(array2[y][z])

    int x:矩阵m1的行数

    int y:矩阵m1的列数/矩阵m2的行数

    int z:矩阵m2的列数

 

输出参数:

    int *r:矩阵m1, m2相乘的结果(array3[x][z])

 

返回值:

        void

 

 

输入描述:

 
 

输入说明: 1、第一个矩阵的行数 2、第一个矩阵的列数和第二个矩阵的行数 3、第二个矩阵的列数 4、第一个矩阵的值 5、第二个矩阵的值

输出描述:

 
 

输出两个矩阵相乘的结果

示例1

输入

2
2
2
3 8
8 0
9 0
18 9

输出

171 72
72 0

# -*- coding: utf-8 -*-
'''
该题思路:
1.将输入转化成矩阵
2.将第二个矩阵转置
3.定义两个列表中元素相乘在求和的方法--》将第一个矩阵与第二个矩阵转置的行相乘得到结果
4.输出格式的调整
'''
while True:
    try:
        A_H=int(input())
        A_L=B_H=int(input())
        B_L=int(input())
        mat1=[]
        mat2=[]
        #将输入形成矩阵1
        for i in range(A_H):
            line1=input().split()
            line1=[int(x) for x in line1]
            mat1.append(line1)
        #将输入形成矩阵2
        for j in range(B_H):
            line2=input().split()
            line2=[int(x) for x in line2]
            mat2.append(line2)

        #求第二个矩阵的转置
        mat2_T=[]
        for i in range(B_L):
            raw = []
            for j in range(B_H):
                raw.append(mat2[j][i])
            mat2_T.append(raw)
        #第一个矩阵的行与第二个元素的列中各元素相乘,返回相加结果
        def muti(l1,l2):
            add=0
            for i in range(len(l1)):
                add+=l1[i]*l2[i]
            return add

        # 转化为输出格式
        for i in range(A_H):
            for j in range(B_L-1 ):
                #打印第一个矩阵的行与第二个元素的列中各元素相乘结果
                print(muti(mat1[i], mat2_T[j]), end=' ')
            print(muti(mat1[i], mat2_T[-1]))
    except:
        break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值