题解 | #矩阵乘法计算量估算#
矩阵乘法计算量估算
https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int n = in.nextInt();
int[][]dataArray = new int[n][2];//[0,1,2][0,1]//
for (int i = 0; i < n; i++) {
dataArray[i][0] = in.nextInt();
// System.out.println(dataArray[i][0]);
dataArray[i][1] = in.nextInt();
// System.out.println(dataArray[i][1]);
}
String partten = in.next();
// System.out.println(partten);
in.close();
int sum = 0;
int num = 0;
int num1 = 0;
char middle = 'a' ;
int midNum = 0;
int positionLow = 0;
int positionUp = 0;
int center = 0;
char[] charray = new char[partten.length()];
int pos = -1;
for (int i = 0; i < partten.length(); i++) {
if (partten.charAt(i) != ')') {
charray[++pos] = partten.charAt(i);
} else {
if (center == 0) {
center++;
middle = charray[pos--];//start 的地方
midNum = middle - 'A';
positionUp = dataArray[midNum][1];
// System.out.println("middle:"+middle);
}
char ch1 = charray[pos--];//pop是left push 是right;
if (ch1 == '(') {
charray[++pos]=('(');//最后位数补偿
}
char ch2 = charray[pos--];
// System.out.println("position:"+charray.getPosition());
if (ch1 == '(') {
sum += positionLow * dataArray[midNum][1] * positionUp;
// System.out.println("sum:" + sum);
} else {
if (ch2 != '(') { //ch1=G ch2 =F;
num = ch1 - 'A';
num1 = ch2 - 'A';
positionUp = dataArray[num][1];
sum += dataArray[num1][0] * dataArray[num1][1] * positionUp ;
// System.out.println("sum1:" + sum);
char ss = charray[pos--];//
} else {
if (ch1 < middle) { //如果是左边
num = ch1 - 'A'; //num =1B
// System.out.println("ch1:" + ch1);
sum += dataArray[num][0] * dataArray[num][1] * positionUp;
positionLow = dataArray[num][0];
// System.out.println("sum0:" + sum);
} else {//如果是右边;
num = ch1 - 'A'; //0
sum += dataArray[num][0] * dataArray[num][1] * positionLow;
positionUp = dataArray[num][1];
// System.out.println("sum3:" + sum);
}
}
}
}
}
System.out.println(sum);
}
}
