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

矩阵乘法计算量估算

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)
    

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务