题解 | #矩阵乘法计算量估算#
矩阵乘法计算量估算
http://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b
count = int(input())
all_matrix_lis = [] # 放所有矩阵的行列数
calculations = 0 # 总计算次数初始设为 0
# 依次得到矩阵的行和列的数据作为列表保存到 all_matrix_lis 中
for i in range(count):
all_matrix_lis.append(list(input().split()))
# 获取最后一行输入
order = input()
abc = [] # 存放即将计算的矩阵行列数
for i in order:
if i == '(':
pass
elif i == ')':
left_matrix = abc[-2]
left_matrix_x = abc[-2][0]
left_matrix_y = abc[-2][1]
right_matrix = abc[-1]
right_matrix_y = abc[-1][1]
# 左侧矩阵的行数 右侧矩阵的列数 组成新的矩阵的行列数
new_matrix = [left_matrix_x, right_matrix_y]
# 两矩阵相乘的次数:a行数 * b列数 * a列数或b行数
calculations += int(left_matrix_x) * int(right_matrix_y) * int(left_matrix_y)
# 将运算后的矩阵去掉
abc = abc[:-2]
# 添加新生成的矩阵的行列数到 abc 列表中
abc.append(new_matrix)
else:
# 非括号时,将 all_matrix_lis 中第一个矩阵的行列数添加到 abc 列表中,便于后面运算
abc.append(all_matrix_lis[0])
all_matrix_lis = all_matrix_lis[1:]
print(calculations)