#include <stdio.h>
#define LOCAL
#define MAXN 200
typedef struct elem
{
char matrix;
int row;
int col;
}elem;
typedef struct stackelem
{
int row;
int col;
}elemstack;
elem data[26];
elemstack stack[MAXN];
int main()
{
int n;
int i;
char str[2];
char c;
int top= -1;
elemstack temp, a, b;
int mulcount;
int error;
#ifdef LOCAL
freopen("c://uva_in.txt", "r", stdin);
#endif
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%s%d%d", str, &(data[i].row), &(data[i].col));
data[i].matrix = str[0];
}
fgetc(stdin);
mulcount = 0;
error = 0;
while((c = fgetc(stdin)) != EOF)
{
if (c == '/n')
{
if (error)
printf("error/n");
else
printf("%d/n", mulcount);
top = -1;
mulcount = 0;
error = 0;
}
else if (c != '('&& c != ')')
{
for (i = 0; i < n; i++)
{
if (data[i].matrix == c)
{
temp.row = data[i].row;
temp.col = data[i].col;
break;
}
}
stack[++top] = temp;
} else if (c == ')')
{
b = stack[top--];
a = stack[top--];
if (a.col == b.row)
{
temp.row = a.row;
temp.col = b.col;
stack[++top] = temp;
mulcount += a.row * a.col * b.col;
} else
error = 1;
}
}
return 0;
}
uva442 Matrix Chain Multiplication
最新推荐文章于 2022-02-25 19:38:17 发布