Skip to content

Commit 67d62a5

Browse files
authored
Create matrix_mult.java
1 parent 524a137 commit 67d62a5

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
//package matchain1;
2+
import java.io.*;
3+
import java.util.*;
4+
public class matchain1
5+
{
6+
public static int[] brr = new int[100];
7+
public static int g = 0;
8+
public static int[][] breakmatrix = new int[100][100];
9+
public static int[][] matrix(int[] arr,int n)
10+
{
11+
int[][] mat = new int[n+1][n+1];
12+
for(int i=0;i<=n;i++)
13+
{
14+
Arrays.fill(mat[i],0);
15+
Arrays.fill(breakmatrix[i],0);
16+
}
17+
for(int i=1;i<n;i++)
18+
{
19+
for(int j=1;j<n-i+1;j++)
20+
{
21+
int l = j+i;
22+
mat[j][l] = Integer.MAX_VALUE;
23+
for(int k=j;k<l;k++)
24+
{
25+
int temp = mat[j][k] + mat[k+1][l] + arr[j-1]*arr[k]*arr[l];
26+
if(temp<mat[j][l])
27+
{
28+
mat[j][l] = temp;
29+
breakmatrix[j][l] = k;
30+
}
31+
}
32+
}
33+
}
34+
int temp = 0;
35+
for(int i=0;i<=n;i++){
36+
for(int j=0;j<=n;j++){
37+
System.out.print(breakmatrix[i][j] + " ");
38+
}
39+
System.out.println();
40+
}
41+
for(int i=0;i<=n;i++){
42+
for(int j=0;j<=n;j++){
43+
System.out.print(mat[i][j] + " ");
44+
}
45+
System.out.println();
46+
}
47+
System.out.println("The optimal solution is : " + mat[1][n]);
48+
return breakmatrix;
49+
}
50+
public static void print(int i,int j)
51+
{
52+
if(Math.abs(j-i)<2)
53+
return;
54+
brr[g] = breakmatrix[i][j];
55+
g++;
56+
print(i,breakmatrix[i][j]);
57+
print(breakmatrix[i][j]+1,j);
58+
59+
}
60+
public static void printmatrix(int[] a)
61+
{
62+
ArrayList<String> s = new ArrayList<String>();
63+
for(int i=0;i<a.length-1;i++)
64+
{
65+
String t = "(" + a[i] + "X" +a[i+1] + ")";
66+
s.add(t);
67+
}
68+
for(int j=0;j<g;j++)
69+
{
70+
s.add(brr[j],"|");
71+
}
72+
for(int i=0;i<s.size();i++)
73+
{
74+
System.out.print(s.get(i) + " ");
75+
}
76+
}
77+
public static void main(String[] args)
78+
{
79+
Scanner scan = new Scanner(System.in);
80+
int n = scan.nextInt();
81+
int[] a = new int[n+1];
82+
for(int i=0;i<=n;i++)
83+
{
84+
a[i] = scan.nextInt();
85+
}
86+
int[][] kmat = matrix(a,n);
87+
print(1,n);
88+
System.out.println("The optimal way for multiplication is: ");
89+
printmatrix(a);
90+
}
91+
92+
}

0 commit comments

Comments
 (0)