题解 | #矩阵乘法计算量估算#
矩阵乘法计算量估算
https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b
python3最高赞回答有问题,只要括号内存在三个以上矩阵相乘,那他这就有问题,因为他总是先计算最内层括号里倒数两个矩阵的乘法
while True:
try:
n = int(input())
x=97#用于之后替换小括号中的所有字母所代表矩阵
dic={}
whole=0
for i in range(n):
dic[chr(i+65)]=list(map(int, input().split()))#存储字母对应矩阵参数
f = input()
while '(' in f:
res=1#用于存储当前最内层括号内乘法运算次数
r=f.rfind('(')#找到最内层左括号
l=r
while f[l+1]!=')':#计算最内层括号内矩阵乘法次数
res=dic[f[l+1]][0]*res
l+=1
else:
res=dic[f[l]][1]*res
dic[chr(x)]=[dic[f[r+1]][0],dic[f[l]][1]]
#将最内层括号运算的结果矩阵存入字典
f = f.replace(f[r:l + 2], chr(x))
#再用新的矩阵替代这个括号内所有矩阵
x+=1
whole+=res
print(whole)
except:
break
