【解题思路】矩阵乘法计算量估算的
矩阵乘法计算量估算
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、将新矩阵入栈,继续参与后面的运算。