mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-13 07:13:37 +08:00
Update MatrixChainMultiplication.java
This commit is contained in:
@ -1,7 +1,8 @@
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class MatrixChainMultiplicationTest {
|
public class MatrixChainMultiplication {
|
||||||
private static Scanner scan = new Scanner(System.in);
|
private static Scanner scan = new Scanner(System.in);
|
||||||
private static ArrayList<Matrix> mArray = new ArrayList<>();
|
private static ArrayList<Matrix> mArray = new ArrayList<>();
|
||||||
private static int size;
|
private static int size;
|
||||||
@ -31,34 +32,35 @@ public class MatrixChainMultiplicationTest {
|
|||||||
p = new int[size + 1];
|
p = new int[size + 1];
|
||||||
|
|
||||||
for (int i = 0; i < size + 1; i++) {
|
for (int i = 0; i < size + 1; i++) {
|
||||||
for (int j=0; j<size+1; j++) {
|
Arrays.fill(m[i], -1);
|
||||||
m[i][j] = -1;
|
Arrays.fill(s[i], -1);
|
||||||
s[i][j] = -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < p.length; i++) {
|
for (int i = 0; i < p.length; i++) {
|
||||||
if (i == 0) {
|
p[i] = i == 0 ? mArray.get(i).col() : mArray.get(i - 1).row();
|
||||||
p[i] = mArray.get(i).col();
|
|
||||||
} else {
|
|
||||||
p[i] = mArray.get(i-1).row();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
matrixChainOrder();
|
matrixChainOrder();
|
||||||
for(int i=0; i<size; i++) { System.out.print("-------"); }
|
for (int i = 0; i < size; i++) {
|
||||||
|
System.out.print("-------");
|
||||||
|
}
|
||||||
System.out.println();
|
System.out.println();
|
||||||
printArray(m);
|
printArray(m);
|
||||||
for(int i=0; i<size; i++) { System.out.print("-------"); }
|
for (int i = 0; i < size; i++) {
|
||||||
|
System.out.print("-------");
|
||||||
|
}
|
||||||
System.out.println();
|
System.out.println();
|
||||||
printArray(s);
|
printArray(s);
|
||||||
for(int i=0; i<size; i++) { System.out.print("-------"); }
|
for (int i = 0; i < size; i++) {
|
||||||
|
System.out.print("-------");
|
||||||
|
}
|
||||||
System.out.println();
|
System.out.println();
|
||||||
|
|
||||||
System.out.println("Optimal solution : " + m[1][size]);
|
System.out.println("Optimal solution : " + m[1][size]);
|
||||||
System.out.print("Optimal parens : ");
|
System.out.print("Optimal parens : ");
|
||||||
printOptimalParens(1, size);
|
printOptimalParens(1, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void printOptimalParens(int i, int j) {
|
private static void printOptimalParens(int i, int j) {
|
||||||
if (i == j) {
|
if (i == j) {
|
||||||
System.out.print("A" + i);
|
System.out.print("A" + i);
|
||||||
@ -69,6 +71,7 @@ public class MatrixChainMultiplicationTest {
|
|||||||
System.out.print(")");
|
System.out.print(")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void printArray(int[][] array) {
|
private static void printArray(int[][] array) {
|
||||||
for (int i = 1; i < size + 1; i++) {
|
for (int i = 1; i < size + 1; i++) {
|
||||||
for (int j = 1; j < size + 1; j++) {
|
for (int j = 1; j < size + 1; j++) {
|
||||||
@ -105,16 +108,27 @@ public class MatrixChainMultiplicationTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class Matrix {
|
class Matrix {
|
||||||
private int count;
|
private int count;
|
||||||
private int col;
|
private int col;
|
||||||
private int row;
|
private int row;
|
||||||
public Matrix(int count, int col, int row) {
|
|
||||||
|
Matrix(int count, int col, int row) {
|
||||||
this.count = count;
|
this.count = count;
|
||||||
this.col = col;
|
this.col = col;
|
||||||
this.row = row;
|
this.row = row;
|
||||||
}
|
}
|
||||||
public int count() { return this.count; }
|
|
||||||
public int col() { return this.col; }
|
int count() {
|
||||||
public int row() { return this.row; }
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
int col() {
|
||||||
|
return col;
|
||||||
|
}
|
||||||
|
|
||||||
|
int row() {
|
||||||
|
return row;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user