题解 | #矩阵乘法计算量估算#
矩阵乘法计算量估算
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); } }