UVA-442 Matrix Chain Multiplication
来源:互联网 发布:安徽仁通网络么样? 编辑:程序博客网 时间:2024/05/13 07:21
2016-08-17
UVA - 442 Matrix Chain Multiplication
题目大意:给出 n 个 矩阵名,行,列,然后给一些式子,求每个式子需要经过多少次计算(乘和加),括号内先算。
解题思路:首先要对矩阵乘法有一些了解。
A(xy)、B(xy)两个矩阵能否进行乘法运算的充要条件是是否满足 A.y == B.x,如果满足,则会得到矩阵C(A.xB.y),这次运算进行的乘法的次数是 A.x*A.y*B.y。
知道这个之后就简单了,创建一个矩阵类型的栈,遇到字母就入栈,遇到)就出栈。两个矩阵判断,可以相乘就计算运算次数,算完之后再把得到的矩阵入栈,若全程都没出现不能相乘的情况,就输出运算次数,否则 error。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int n;char str[10000];struct node {char z;int x, y;}s[200], stack[10000];int find(char c) {for (int i = 0; i < n; i++)if ( c == s[i].z )return i;}int main() {cin >> n;getchar();for (int i = 0; i < n; i++) {scanf("%c%d%d", &s[i].z, &s[i].x, &s[i].y);getchar();}while ( ~scanf("%s", str) ) {getchar();int num = 0;int tag = 1;int sum = 0;int len = strlen(str);if ( len == 1 ) {cout << "0" << endl;continue;}for (int i = 0; i < len; i++) {if ( str[i] >= 'A' && str[i] <= 'Z' ) {stack[num].z = s[find(str[i])].z;stack[num].x = s[find(str[i])].x;stack[num].y = s[find(str[i])].y;num++;}if ( str[i] == ')' ) {if ( stack[num-2].y != stack[num-1].x ) {tag = 0;break;}sum += stack[num-2].x * stack[num-2].y * stack[num-1].y;stack[num-2].y = stack[num-1].y;num--;}}if ( !tag )cout << "error" << endl;elsecout << sum << endl;}return 0;}
0 0
- UVa 442 Matrix Chain Multiplication
- Uva 442 Matrix Chain Multiplication
- UVa 442 Matrix Chain Multiplication
- uva 442 - Matrix Chain Multiplication
- UVa 442 - Matrix Chain Multiplication
- UVa 442 - Matrix Chain Multiplication
- UVa 442 Matrix Chain Multiplication
- UVA 442 Matrix Chain Multiplication
- uva 442 - Matrix Chain Multiplication
- uva 442 Matrix Chain Multiplication
- UVa 442 - Matrix Chain Multiplication
- UVa 442 - Matrix Chain Multiplication
- uva 442Matrix Chain Multiplication
- uva-442 Matrix Chain Multiplication
- UVa 442 - Matrix Chain Multiplication
- uva 442 - Matrix Chain Multiplication
- UVA 442 Matrix Chain Multiplication
- uva 442 Matrix Chain Multiplication
- B-Tree 、B+树、B*树
- 集群环境下的图片服务器搭建
- 基于opencv的物体定位
- Android的ListView之优化1
- 拆数字游戏
- UVA-442 Matrix Chain Multiplication
- 51nod 1010 只包含因子2 3 5的数
- 单词统计(华为测试题目)
- 误差error,偏置bias,方差variance的见解
- Permutation那些事
- TTL接口 液晶屏 与 LVDS接口 液晶屏的 区别
- JPushSDK推送
- Android的ListView之优化2
- 家用无线网络布置——小凡,晚安