UVa-442 Matrix Chain Multiplication
来源:互联网 发布:淘宝网店手机实名认证 编辑:程序博客网 时间:2024/05/29 09:27
#include <iostream>#include <cstdio>#include <stack>#include <string>using namespace std;struct MATRIX{ int row; int col; MATRIX(int row = 0, int col = 0) : row(row), col(col) {}} matrix[26]; //因为26个英文字母stack<MATRIX> element;string letter, expr; //letter 矩阵字母表示 expr 表达式表示int n, num, ans;bool flag;int main(){ scanf("%d", & n); while(n --) { cin >> letter; num = letter[0] - 'A'; //变为结构体数组下标 cin >> matrix[num].row >> matrix[num].col; //输入矩阵的 行 列 } while(cin >> expr) //输入表达式 { flag = true; //判断是否error ans = 0; for(int i = 0; i < (int)expr.length(); i ++) { if(isalpha(expr[i])) //如果是字母 就将该字母所表达的矩阵投入栈 element.push(matrix[expr[i] - 'A']); else if(expr[i] == ')') //计算两个矩阵 { MATRIX x2 = element.top(); element.pop(); MATRIX x1 = element.top(); element.pop(); if(x1.col != x2.row) { flag = false; break; } else { ans += x1.row * x1.col * x2.col; element.push(MATRIX(x1.row,x2.col)); //得到一个新的矩阵再投入栈 } } } if(flag) //如果无错 输出ans printf("%d\n", ans); else printf("error\n"); } return 0;}
题意:输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法的次数。如果乘法无法进行,输出error。假定A是m * n矩阵,B是n * p矩阵,那么AB是m * p矩阵,乘法次数为10 * 20 * 5(BC的乘法次数) + 50 * 10 * 5 ((A(BC))的乘法次数) = 3500。
题解:简单的表示式解析可以借助栈来完成。题目说过括号已经完整。所以遇到右括号运算即可。
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
- Java 四舍五入保留小数点后两位
- MyEclipse中使用JUnit进行单元测试
- 发送邮件 设置邮件昵称
- OutMan——Foundation框架中的集合类(一)(二)
- Win32 Window Hierarchy and Styles , Kyle Marsh
- UVa-442 Matrix Chain Multiplication
- c语言环境下的xml数据的序列化的过程以机顶盒向手机APK发送数据为例
- How to choose the FF plywood and wood I beam
- Java并发编程深入学习—— sleep和wait的区别
- 欢迎使用CSDN-markdown编辑器
- C# VS预生成事件命令行 和 生成后事件命令行
- HDUOJ_1874(畅通工程续)(spfa)
- Qt下使用的静态链接库------ *.lib转化为mingw使用的.a格式的静态库
- Android微信支付客户端开发概要