ZOJ 1094_Matrix Chain Multiplication
来源:互联网 发布:vue服务端渲染java 编辑:程序博客网 时间:2024/05/29 02:51
大意:输入一系列矩阵(不超过26个),判断下面输入的矩阵乘法是否合法(即是否满足前者的列等于后者的行),若合法则输出其做了多次数的乘法运算(若有两矩阵A:a,b; B: b,c ,则其做的数乘法次数为a*b*c),若不合法,则输出error。
分析:为了操作方便定义一个矩阵结构,保存矩阵名,row和column. 从题意可知,每次的乘法都用括号隔开,那么这里就符合LIFO。前括号可以忽略,后括号作为每次乘法运算的标识。遇到矩阵即压栈。
#include<iostream>#include<stack>#include<string>using namespace std;struct Matrix//定义矩阵元素 {char name;int row;int column;};int main(){stack<Matrix> sk;int i,n,j,result;Matrix M[26],a,b,temp;string s;//保存每一组输入 bool flag;//error标识 while(cin>>n){for(i=0;i<n;i++)cin>>M[i].name>>M[i].row>>M[i].column;while(cin>>s){result=0;i=0;flag=true;while(s[i]!='\0'){if(s[i]!='(')//过滤'(' {if(s[i]>='A'&&s[i]<='Z')//遇到字母即在已知的矩阵数组中匹配 {for(j=0;j<n;j++){if(M[j].name==s[i]){sk.push(M[j]);//压栈 break;}}}else{if(s[i]==')')//')'为乘法标识 {b=sk.top();sk.pop();a=sk.top();sk.pop();if(a.column==b.row)//符合矩阵乘法法则 {temp.name='M';temp.row=a.row;temp.column=b.column;sk.push(temp);//将结果压栈 result+=a.row*a.column*b.column;//累计乘法次数 }else//不符合即error并标识不输出result {cout<<"error"<<endl;flag=false;break;}}}}i++;}while(!sk.empty())//清空栈 sk.pop();if(flag)cout<<result<<endl;}}return 0;}
- ZOJ 1094_Matrix Chain Multiplication
- zoj - 1094 - Matrix Chain Multiplication
- zoj-1094-Matrix Chain Multiplication
- zoj 1094 Matrix Chain Multiplication
- ZOJ 1094 Matrix Chain Multiplication
- ZOJ 1094 Matrix Chain Multiplication
- ZOJ-1094-Matrix Chain Multiplication
- ZOJ-1094,POJ-2246 Matrix Chain Multiplication
- zoj 1094 poj 2246 Matrix Chain Multiplication(堆栈)
- UVa 442 - Matrix Chain Multiplication(zoj 1094)
- POJ 2246/ ZOJ 1094 : Matrix Chain Multiplication - 矩阵相乘,模拟
- UVa 442/HDU 1082/ZOJ 1094 Matrix Chain Multiplication(模拟&栈)
- zoj-1094Matrix Chain Multiplication(栈来实现矩阵相乘)
- Matrix Chain Multiplication
- zoj1094 Matrix Chain Multiplication
- Matrix chain multiplication problem
- Matrix Chain Multiplication
- uva442 Matrix Chain Multiplication
- POJ1273:Drainage Ditches
- u-boot启动linux内核
- 不用临时变量也可以交换变量的值
- WPF、Windows Forms和Silverlight间的联系和区别
- 每日一练
- ZOJ 1094_Matrix Chain Multiplication
- svm资源
- 经典 Javascript 正则表达式
- cygwin下把window下dll文件转换成a或者so文件的方法
- asp.net地址映射——伪静态
- 基于多特征集成的图像自动标注方法研究
- UNIX 高手的 10 个习惯
- Ubuntu下Hadoop快速安装手册
- UNIX 高手的另外 10 个习惯