栈的应用-矩阵链乘uva442
来源:互联网 发布:python 中英文摘要 编辑:程序博客网 时间:2024/05/17 01:32
思路没理清。。。
需要用两个栈,一个存括号,另一个村矩阵,当遇到)的时候矩阵的栈弹出两个进行计算(刚开始以为可能以三个在一个括号里。。。),然后加入新矩阵。
#include<iostream>#include<cstdio>#include<string>#include<stack>#include<map>using namespace std;const int maxn=30;map<char,pair<int,int> >marix;int n,ans;bool solve(string s){ ans=0; stack<char> st1; stack<pair<int,int> > st2; int len=s.size(); for(int i=0;i<len;i++) { if(s[i]=='(')st1.push(s[i]); else if(isalpha(s[i])) { st2.push(marix[s[i]]); } else { st1.pop(); pair<int,int> tmp1=st2.top();st2.pop(); pair<int,int> tmp2=st2.top();st2.pop(); if(tmp1.first!=tmp2.second)return false; ans+=tmp2.first*tmp2.second*tmp1.second; st2.push(make_pair(tmp2.first,tmp1.second)); } } if(!st1.empty())return false; return true;}int main(){ cin>>n; char a; int x,y; string s; for(int i=0;i<n;i++) { cin>>a>>x>>y; marix[a]=make_pair(x,y); } while(cin>>s) { if(solve(s))cout<<ans<<endl; else cout<<"error"<<endl; } return 0;}
0 0
- 栈的应用-矩阵链乘uva442
- uva442-矩阵链乘
- UVa442 矩阵链乘 栈 stack
- UVa442 Matrix Chain Multiplication(矩阵链乘)
- 例题6-3 矩阵链乘 UVA442
- UVa442矩阵连乘
- 栈对于表达式求值的特殊作用&&UVa442 Matrix Chain Multiplication(矩阵链乘)的理解与解析
- 算法之路二:刘汝佳算法竞赛入门经典:栈和队列 矩阵链乘UVA442
- UVa442 Matrix Chain Multiplication(矩阵链乘)
- UVa442 Matrix Chain Multiplication(矩阵链乘)java实现
- UVA442 Matrix Chain Multiplication 矩阵运算量计算(栈的简单应用)
- UVa442 例题6-3 矩阵链乘(Matrix Chain Multiplication)
- Matrix Chain Multiplication UVA442 矩阵连乘 stack
- 矩阵链乘的变换
- 第六章基于栈的矩阵链乘
- uva442 栈
- UVA442栈
- 开心的mdd-矩阵链乘
- iphone mac平台下破解微信的语音
- Java8中的java.util.Random类
- 阿里巴巴面试题--Java对象初始化
- 尝试运行matplotlib显示图片
- pku1020
- 栈的应用-矩阵链乘uva442
- URLConnectionReaderDemo 类及其 main()方法
- (未完成)《浪潮之巅》精华摘录+笔记(二)
- JAVAJAVAC命令行
- android:versionCode和android:versionName 用途
- 纯HTML5+JS制作 物理 拖拽 山地车~!
- 【hibernate】所遇问题分析,总结
- android 打开网页
- Protect Mode