【解题思路】矩阵乘法计算量估算的

矩阵乘法计算量估算

http://www.nowcoder.com/questionTerminal/15e41630514445719a942e004edc0a5b

输入和输出部分都很常规,我直接写中间的处理过程。

一、前提

假设矩阵乘法的矩阵存在arr_list中,计算的规则存在role_str中。
arr_list = [[m,n], [n,p], [p,q]]
role_str = (A(BC))

二、运算

2.1.整体思路

通过对role_str进行逐个字符的遍历,并进行相应处理。

  • 1、字符 是左括号,什么也不做
  • 2、字符 是右括号,出栈
  • 3、字符 是非括号,入栈

2.2.细节处理

2.2.1.矩阵乘法时,乘法运算的次数

矩阵乘法的运算有些久没用,忘记了,但这是解题的基础,不会就没得做。看了通过的大神的代码,然后自己在纸上演算了一遍才记起来。
以 [m,n] 表示m行n列的矩阵,以 [m,n] x [n,p] 为例进行矩阵乘法规则说明。

  • 1、第一个矩阵取一行,第二个矩阵取一列,计算时是对应相乘,有n次乘法。
  • 2、还是第一个矩阵刚参加运算的那行,第二个矩阵的所有列(共p列),会有n*p次乘法
  • 3、第一个矩阵的所有行(共m行)参加运算,共会有n*p*m次乘法运算。
  • 4、得出 [m,n] x [n,p] 共会有n*p*m次乘法运算,运算后的矩阵为 [m,p]

2.2.2.出栈处理

  • 1、如果只有一个矩阵,无法进行矩阵乘法,程序结束。
  • 2、如果有多个矩阵,出栈最后两个。注:先出栈的为第二个矩阵,后出栈的为第一个矩阵
  • 3、通过 2.2.1 的方法计算单次矩阵乘法运算的乘法次数,得到运算后的新矩阵
  • 4、将新矩阵入栈,继续参与后面的运算。
全部评论
算法有问题,如果是(A(B(CD)E)的话,按照你的算***先算CD->BCD->ABCD->ABCDE,但是应该是CD->BCD->BCDE->ABCDE
4 回复 分享
发布于 2021-10-28 23:27
学习了
点赞 回复 分享
发布于 2021-08-17 23:42
2.1连续输入的字符,先计算后再入栈
点赞 回复 分享
发布于 2021-10-13 15:47
少了一个右括号
点赞 回复 分享
发布于 2022-03-12 15:47
自己在草稿纸上画了一下才明白栈怎么用,确实这样能得到正确结果
点赞 回复 分享
发布于 2022-09-23 14:02 广东
想请问一下大佬,按这种出栈入栈的方式,表达式 (A((BC)D)(EF))的相乘顺序应该是1,但是从实际出发应该顺序是2。这样的话使用栈的方式是不是会有问题呢? 1、BC、D、EF、A 2、BC、D、A、EF
点赞 回复 分享
发布于 2022-11-05 19:07 河北

相关推荐

不愿透露姓名的神秘牛友
11-27 10:28
点赞 评论 收藏
分享
11-08 17:36
诺瓦科技_HR
点赞 评论 收藏
分享
评论
48
2
分享
牛客网
牛客企业服务