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

矩阵乘法计算量估算

https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b

  • 矩阵相乘要求第一个矩阵的列等于第二个矩阵的行,计算次数等于第一个矩阵行*第一个矩阵列(第二个矩阵行)*第二个矩阵列
  • 利用简单的栈结构匹配计算,可参考中缀表达式计算。如果遇到左括号则入符号栈;如果右括号则出符号栈并获取两个数值栈进行相乘,将结果添加到最终结果;如果遇到A-Z则通过ord(c)-65计算下标,并将对应下标的矩阵行和列入数值栈
n = int(input())
matrix = []
for _ in range(n):
    matrix.append(list(map(int, input().split())))

s = [c for c in input()]
num_stack = []
oper_stack = []
count = 0

def matrix_count(a, b):
    return a[0]*a[1]*b[1]

for c in s:
    if c == '(':
        oper_stack.append(c)
    elif c == ')':
        oper_stack.pop()
        b, a = num_stack.pop(), num_stack.pop()
        count += matrix_count(a, b)
        num_stack.append([a[0], b[1]])
    else:
        idx = ord(c)-65
        num_stack.append(matrix[idx])
print(count)
    

全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
09-25 10:34
东北大学 Java
多面手的小八想要自然醒:所以读这么多年到头来成为时代车轮底下的一粒尘
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务