题解 | #矩阵乘法计算量估算#

矩阵乘法计算量估算

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

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务