UVa 442 - Matrix Chain Multiplication
2015-03-23 20:45
471 查看
题目:给你一些矩阵,以及一些矩阵间的乘法运算(包含括号),判断计算是否合法,合法输出结果。
分析:模拟,递归。见到括号直接递归调用,每次判断乘法左边的行是否等于右边的列即可。
说明:注意cin的读数据的情况,会RE,(zoj1094)。
分析:模拟,递归。见到括号直接递归调用,每次判断乘法左边的行是否等于右边的列即可。
说明:注意cin的读数据的情况,会RE,(zoj1094)。
#include <iostream> #include <cstring> using namespace std; struct node { int L,R; long long V; }Matrix[ 27 ],Error; bool Flag; node Calculate( char* Data, int s, int e ) { int count = 0; node Save[ 2 ]; for ( int i = s ; i <= e ; ++ i ) if ( Data[ i ] == '(' ) { int start = i + 1; int untop = 1; while ( untop && ++ i ) { if ( Data[ i ] == '(' ) ++ untop; if ( Data[ i ] == ')' ) -- untop; } Save[ count ++ ] = Calculate( Data, start, i-1 ); if ( Flag ) return Error; }else Save[ count ++ ] = Matrix[ Data[ i ]-'A' ]; node Now = Save[ 0 ]; for ( int i = 1 ; i < count ; ++ i ) { if ( Now.R != Save[ i ].L ) { Flag = true; return Error; } Now.V = Now.V + Save[ i ].V + Now.L*Now.R*Save[ i ].R; Now.R = Save[ i ].R; } return Now; } char Data[ 260 ]; int main() { int n; char C; cin >> n; for ( int i = 0 ; i < n ; ++ i ) { cin >> C; //从后向前运算的,写在一起就 RE 了。。。 cin >> Matrix[ C-'A' ].L >> Matrix[ C-'A' ].R; Matrix[ C-'A' ].V = 0LL; } while ( cin >> Data ) { Flag = false; node Answer = Calculate( Data, 0, strlen( Data )-1 ); if ( Flag ) cout << "error" << endl; else cout << Answer.V << endl; } return 0; }
相关文章推荐
- Uva - 442 - Matrix Chain Multiplication
- 算法竞赛入门经典第六章例题6-3 Matrix Chain Multiplication UVA - 442
- 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
- POJ2246 HDU1082 ZOJ1094 UVA442 Matrix Chain Multiplication题解
- 【日常学习】【栈】【表达式求值】Uva442 - Matrix Chain Multiplication题解
- UVa 442 Matrix Chain Multiplication
- uva442 Matrix Chain Multiplication
- 【栈 && 矩阵的知识】UVA 442 Matrix Chain Multiplication
- UVa 442 ------ Matrix Chain Multiplication
- UVa-442-Matrix Chain Multiplication
- uva442 Matrix chain multiplication(数据结构)
- uva-442 Matrix Chain Multiplication
- uva 442 Matrix Chain Multiplication(模拟)
- UVA - 442 Matrix Chain Multiplication
- Uva 442-Matrix Chain Multiplication (基本栈)