首页 > 编程知识 正文

python语言中,包含矩阵运算的第三方库,python矩阵相乘代码

时间:2023-05-03 05:42:45 阅读:279914 作者:3448

描述
矩阵乘法的运算量与矩阵乘法的顺序强相关。
例如:

A是一个50×10的矩阵,B是10×20的矩阵,C是20×5的矩阵

计算ABC有两种顺序:((AB)C)或者(A(BC)),前者需要计算15000次乘法,后者只需要3500次。

编写程序计算不同的计算顺序需要进行的乘法次数。

本题含有多组样例输入!

输入描述:

输入多行,先输入要计算乘法的矩阵个数n,每个矩阵的行数,列数,总共2n的数,最后输入要计算的法则计算的法则为一个字符串,仅由左右括号和大写字母('A'~'Z')组成,保证括号是匹配的且输入合法!

输出描述:

输出需要进行的乘法次数

示例1
输入:

350 1010 2020 5(A(BC))

输出:

3500

解析:

1、当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘。
2、矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。
3、乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。

代码实现如下:

while True: try: n = int(input()) arr = [] order = [] res = 0 for i in range(n): arr.append(list(map(int, input().split()))) f = input() #(A(B(C(D(E(F(GH))))))) #((AB)C) for i in f: if i.isalpha(): order.append(arr[ord(i)-65]) elif i==')' and len(order)>=2: #print(order) b = order.pop() a = order.pop() #print(a,b) res += a[1] * b[1] * a[0] order.append([a[0],b[1]]) print(res) #print(order) except Exception as e: #print(e) break

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。