分享|hh
81
2025.11.04
2025.11.04
发布于 上海市

import java.util.Scanner;

public class MatrixChainMultiplicationMax {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

int n = scanner.nextInt();

int[] dims = new int[n + 1];

for (int i = 0; i < n; i++) {

int row = scanner.nextInt();

int col = scanner.nextInt();

if (i == 0) {

dims[i] = row;

}

dims[i + 1] = col;

}

int maxCost = maxMatrixChainCost(dims, 0, n - 1);

System.out.println(maxCost);

}

private static int maxMatrixChainCost(int[] dims, int i, int j) {

// 单个矩阵,乘法次数为0

if (i == j) {

return 0;

}

int max = Integer.MIN_VALUE;

// 尝试所有可能的分割点

for (int k = i; k < j; k++) {

int leftMax = maxMatrixChainCost(dims, i, k);

int rightMax = maxMatrixChainCost(dims, k + 1, j);

int cost = leftMax + rightMax + dims[i] * dims[k + 1] * dims[j + 1];

if (cost > max) {

max = cost;

}

}

return max;

}

}

评论 (0)