题解 | #矩阵乘法计算量估算#
矩阵乘法计算量估算
https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) { BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); Stack<Integer> matrix = new Stack<>(); String a; int i = 0, l, n = 0, m1, m2, m3, index, sum = 0; char[] chs; int[][] dim; try { a = r.readLine(); chs = a.toCharArray(); l = chs.length; while (i < l) { n *= 10; n += chs[i] - '0'; i++; } i = 0; dim = new int[n][2]; while (i < n) { a = r.readLine(); parsing(a, dim[i++]); } a = r.readLine(); chs = a.toCharArray(); } catch (IOException e) { throw new RuntimeException(e); } i = 0; l = chs.length; while (i < l) { if (chs[i] == ')') { m1 = matrix.pop(); m2 = matrix.pop(); matrix.pop(); m3 = matrix.pop(); sum += m1 * m2 * m3; matrix.push(m3); matrix.push(m1); i++; continue; } if ((chs[i] - 'A' | 'Z' - chs[i]) > 0) { index = chs[i] - 'A'; matrix.push(dim[index][0]); matrix.push(dim[index][1]); } i++; } System.out.print(sum); } private static void parsing(String a, int[] mat) { char[] chs = a.toCharArray(); int i = 0, l = chs.length, n = 0; while (i < l) { if (chs[i] == ' ') { mat[0] = n; n = 0; i++; continue; } n *= 10; n += chs[i] - '0'; if (i == l - 1) mat[1] = n; i++; } } }