Skip to content

Commit ae19f0d

Browse files
committed
Matrix chain multiplication in O(n^3)
1 parent 0b1cb0d commit ae19f0d

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

matrix_chain.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
void matrixMult(int dimensions[], int n) {
5+
int dp[n][n];
6+
int i,j,k,l;
7+
8+
for(i=1; i<n; i++) {
9+
dp[i][i] = 0;
10+
}
11+
for(l=2; l<n; l++) {
12+
for(i=1; i<n-l+1; i++) {
13+
j = i+l-1;
14+
dp[i][j] = INT_MAX;
15+
for(k=i; k<=j-1; k++) {
16+
int cost = dp[i][k] + dp[k+1][j] + dimensions[i-1]*dimensions[k]*dimensions[j];
17+
if(cost < dp[i][j])
18+
dp[i][j] = cost;
19+
}
20+
}
21+
}
22+
cout<<"Min cost : "<<dp[1][n-1]<<endl;
23+
}
24+
25+
int main() {
26+
int i,n;
27+
cin>>n;
28+
int dimensions[n+1];
29+
for(i=0; i<=n; i++) {
30+
cin>>dimensions[i];
31+
}
32+
matrixMult(dimensions, n+1);
33+
return 0;
34+
}

0 commit comments

Comments
 (0)