题解 | #矩阵乘法计算量估算#
矩阵乘法计算量估算
https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b
n = int(input()) mdict = {} for i in range(n): mdict[chr(ord('A')+i)] = list(map(int, input().strip().split()))## 用strip()先去掉可能隐藏的末尾空格。再split(),防止map不过去 s = input() result = 0 temp = [] matrix_linshi = '' for i in s: if i != ')':#不遇到')'就一直压栈 temp.append(i) else: #直接遇到')',把前面的个弹出来计算乘法运算量 # ['A', 'B'] linshi = [] matrix = '' while True: if temp[-1] != "(": a = temp.pop() linshi.insert(0, a) else: break matrix_linshi += 'LINSHI' result += mdict[linshi[0]][0] * mdict[linshi[0]][1] * mdict[linshi[1]][1] mdict[matrix_linshi] = [mdict[linshi[0]][0], mdict[linshi[1]][1]] for matrix in linshi[2:]: result += mdict[matrix_linshi][0] * mdict[matrix_linshi][1] * mdict[matrix][1] mdict[matrix_linshi] = [mdict[matrix_linshi][0], mdict[matrix][1]] temp.pop() temp.append(matrix_linshi) print(result)
题里没说括号里是几个矩阵 (A(BC)D) 和 (A(BCD)) 是有区别的,我看很多是按照2个矩阵去适配的,我按照所有的情况适配了下
#软件测试#