题解 | #矩阵乘法计算量估算#
矩阵乘法计算量估算
http://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n = Integer.parseInt(in.next());
Array[] array = new Array[n];
for(int i=0; i<n; i++){
array[i] = new Array(Integer.parseInt(in.next()),
Integer.parseInt(in.next()));
}
String rule = in.next();
Stack<Array> q = new Stack<>();
Stack<Character> brack = new Stack<>();
int index = 0;
int count = 0;
for(char c:rule.toCharArray()){
if(c == '('){
brack.add(c);
}
if(c >= 'A' && c <= 'Z'){
q.add(array[index++]);
}
if(c == ')'){
brack.pop();
Array a = q.pop();
Array b = q.pop();
count += b.row * b.col * a.col;
q.add(new Array(b.row, a.col));
}
}
System.out.println(count);
}
}
public static class Array{
private int row;
private int col;
public Array(int row, int col){
this.row = row;
this.col = col;
}
}
}
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n = Integer.parseInt(in.next());
Array[] array = new Array[n];
for(int i=0; i<n; i++){
array[i] = new Array(Integer.parseInt(in.next()),
Integer.parseInt(in.next()));
}
String rule = in.next();
Stack<Array> q = new Stack<>();
Stack<Character> brack = new Stack<>();
int index = 0;
int count = 0;
for(char c:rule.toCharArray()){
if(c == '('){
brack.add(c);
}
if(c >= 'A' && c <= 'Z'){
q.add(array[index++]);
}
if(c == ')'){
brack.pop();
Array a = q.pop();
Array b = q.pop();
count += b.row * b.col * a.col;
q.add(new Array(b.row, a.col));
}
}
System.out.println(count);
}
}
public static class Array{
private int row;
private int col;
public Array(int row, int col){
this.row = row;
this.col = col;
}
}
}
查看4道真题和解析