UVA Solution 442 – Matrix Chain Multiplication – Volume 4
UVA Online Judge Solution 442 – Matrix Chain Multiplication| Volume 4
UVA Problem Link – https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=6&page=show_problem&problem=383
Problem Name: 442 – Matrix Chain Multiplication
Problem Number : UVA – 442 – Matrix Chain Multiplication
Online Judge : UVA Online Judge Solution
Volume: 4
Solution Language : C, C plus plus
UVA Solution 400 Code in C/CPP:
#include <stdio.h>
int n, i, j, k;
int alpha[105][2];
char s[105];
void solve() {
int stack[105], sidx = -1;
int sum = 0, alidx = 'Z';
for(i = 0; s[i]; i++) {
if(s[i] == '(') {
stack[++sidx] = '(';
} else if(s[i] == ')'){
j = sidx;
while(stack[j] != '(')
j--;
for(k = j+1; k < sidx; k++) {
if(alpha[stack[k]-'A'][1] != alpha[stack[k+1]-'A'][0]) {
puts("error");
return;
}
sum += alpha[stack[k]-'A'][0]*alpha[stack[k]-'A'][1]*alpha[stack[k+1]-'A'][1];
}
alidx++;
alpha[alidx-'A'][0] = alpha[stack[j+1]-'A'][0];
alpha[alidx-'A'][1] = alpha[stack[sidx]-'A'][1];
stack[j] = alidx;
sidx = j;
} else
stack[++sidx] = s[i];
}
printf("%dn", sum);
}
int main() {
int x, y;
scanf("%d", &n);
for(i = 0; i < n; i++) {
scanf("%s %d %d", s, &x, &y);
alpha[s[0]-'A'][0] = x;
alpha[s[0]-'A'][1] = y;
}
while(scanf("%s", s) == 1) {
solve();
}
return 0;
}
Tags: UVA Online Judge Solution, UVA OJ Solution list, UVA Problems Solution, UVA solver, UVA all problem solution list, UVA Matrix Chain Multiplication code in C, UVA 442 code in C++, UVA 442 solution in C, UVA Matrix Chain Multiplication solution