📄 1443.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 1443 on 2005-09-14 at 01:13:53 */
#include <stdio.h>
typedef struct {
int row;
int col;
} Matrix;
long matrixMuti(Matrix, Matrix, Matrix*);
int main()
{
char ch;
Matrix m[26], mutiMatrix, stack[200];
int n, i, top, error;
long sum, j;
scanf("%d", &n);
for(i = 0; i < n; i++) {
getchar();
ch = getchar() - 'A';
scanf(" %d %d", &m[ch].row, &m[ch].col);
}
while(getchar() != '\n')
;
while(1) {
sum = 0;
error = 0;
top = 0;
while(1) {
ch = getchar();
if(ch == EOF) {
return 0;
} else if(ch == '(') {
continue;
} else if(ch == ')') {
j = matrixMuti(stack[top-2], stack[top-1], &mutiMatrix);
top -= 2;
if(j == -1) {
error = 1;
while(getchar() != '\n')
;
break;
} else {
sum += j;
stack[top].row = mutiMatrix.row;
stack[top].col = mutiMatrix.col;
top++;
}
} else if(ch != '\n') {
stack[top].row = m[ch-'A'].row;
stack[top].col = m[ch-'A'].col;
top++;
} else {
break;
}
}
if(error == 1) {
printf("error\n");
} else {
printf("%ld\n", sum);
}
}
return 0;
}
long matrixMuti(Matrix m1, Matrix m2, Matrix *result)
{
long time;
if(m1.col != m2.row) {
return -1;
} else {
time = m1.row * m1.col * m2.col;
result->row = m1.row;
result->col = m2.col;
return time;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -