矩阵乘法计算量估算
矩阵乘法的运算量与矩阵乘法的顺序强相关。
例如:
A是一个50×10的矩阵,B是10×20的矩阵,C是20×5的矩阵
计算A*B*C有两种顺序:((AB)C)或者(A(BC)),前者需要计算15000次乘法,后者只需要3500次。
编写程序计算不同的计算顺序需要进行的乘法次数。
数据范围:矩阵个数:1≤n≤15,行列数:1≤rowi,coli≤100,保证给出的字符串表示的计算顺序唯一。
输入描述:
输入多行,先输入要计算乘法的矩阵个数n,每个矩阵的行数,列数,总共2n的数,最后输入要计算的法则
计算的法则为一个字符串,仅由左右括号和大写字母(‘A’~‘Z’)组成,保证括号是匹配的且输入合法!
输出描述:
输出需要进行的乘法次数
示例1
输入:
3
50 10
10 20
20 5
(A(BC))输出:3500
Java 编程
package cn.net.javapub.javaintroduction.example;
/**
 * @author: shiyuwang
 */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // Scanner sc = new Scanner(System.in);
        String str = null;
        while ((str = br.readLine()) != null) {
            int num = Integer.parseInt(str);
            int [][] arr = new int[num][2];
            for(int i = 0;i<num;i++) {
                String [] sa = br.readLine().split(" ");
                arr[i][0] = Integer.parseInt(sa[0]);
                arr[i][1] = Integer.parseInt(sa[1]);
            }
            int n = arr.length -1;
            char [] ca = br.readLine(). toCharArray();
            Stack<Integer> stack = new Stack<>();
            int sum = 0;
            for(int i = ca.length - 1;i>=0;i--) {
                char one = ca[i];
                if(one == ')') {
                    stack.push(-1);
                }else if(one == '(') {
                    int n1 = stack.pop();
                    int n2 = stack.pop();
                    sum+= arr[n1][0]*arr[n2][0]*arr[n2][1];
                    arr[n1][1] = arr[n2][1];
                    stack.pop();
                    stack.push(n1);
                }else {
                    stack.push(n);
                    n--;
                }
            }
            System.out.println(sum);
        }
    }
}展示效果:

 
 
                     
            
        













 
                    

 
                 
                    