您的位置:首页 > 大数据 > 人工智能

UVA 442-Matrix Chain Multiplication

2016-07-26 21:01 501 查看

UVA 442-Matrix Chain Multiplication

题目大意:矩阵相乘,求乘法次数

解题思路:用栈存,遇到‘)’时将栈顶俩位俩乘后存入,并计算乘法次数

#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int main() {
int n;
int a[100][2];
int s[1000][2];
int t;
char m[1000];
cin >> n;
getchar();
for(int i = 0; i < n; i++) {
char c = getchar();
scanf("%d%d", &a[c-'A'][0], &a[c-'A'][1]);
getchar();
}
while(gets(m)) {
int sum = 0;
int p = 1;
t = 0;
getchar();
for(int i = 0; m[i] != '\0'; i++) {
if(m[i] == '(')
continue;
else if(m[i] == ')') {
int t1 =t-2, t2 =t-1;
if(s[t1][1] != s[t2][0]) {
p = 0;
break;
}
else
sum += s[t1][0] * s[t2][0] * s[t2][1];
s[t1][1] = s[t2][1];
t--;
}
else {
int t3 = m[i] - 'A';
s[t][0] = a[t3][0];
s[t][1] = a[t3][1];
t++;
}

}
if(p == 1)
printf("%d\n", sum);
else
printf("error\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva c语言