Update MatrixChainMultiplication.java

This commit is contained in:
Libin Yang
2018-12-21 09:51:26 +08:00
committed by GitHub
parent 2da7d89123
commit 3183957ec7

View File

@ -1,7 +1,8 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class MatrixChainMultiplicationTest {
public class MatrixChainMultiplication {
private static Scanner scan = new Scanner(System.in);
private static ArrayList<Matrix> mArray = new ArrayList<>();
private static int size;
@ -31,34 +32,35 @@ public class MatrixChainMultiplicationTest {
p = new int[size + 1];
for (int i = 0; i < size + 1; i++) {
for (int j=0; j<size+1; j++) {
m[i][j] = -1;
s[i][j] = -1;
}
Arrays.fill(m[i], -1);
Arrays.fill(s[i], -1);
}
for (int i = 0; i < p.length; i++) {
if (i == 0) {
p[i] = mArray.get(i).col();
} else {
p[i] = mArray.get(i-1).row();
}
p[i] = i == 0 ? mArray.get(i).col() : mArray.get(i - 1).row();
}
matrixChainOrder();
for(int i=0; i<size; i++) { System.out.print("-------"); }
for (int i = 0; i < size; i++) {
System.out.print("-------");
}
System.out.println();
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();
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("Optimal solution : " + m[1][size]);
System.out.print("Optimal parens : ");
printOptimalParens(1, size);
}
private static void printOptimalParens(int i, int j) {
if (i == j) {
System.out.print("A" + i);
@ -69,6 +71,7 @@ public class MatrixChainMultiplicationTest {
System.out.print(")");
}
}
private static void printArray(int[][] array) {
for (int i = 1; i < size + 1; i++) {
for (int j = 1; j < size + 1; j++) {
@ -105,16 +108,27 @@ public class MatrixChainMultiplicationTest {
}
}
class Matrix {
private int count;
private int col;
private int row;
public Matrix(int count, int col, int row) {
Matrix(int count, int col, int row) {
this.count = count;
this.col = col;
this.row = row;
}
public int count() { return this.count; }
public int col() { return this.col; }
public int row() { return this.row; }
int count() {
return count;
}
int col() {
return col;
}
int row() {
return row;
}
}