标签:矩阵 i++ for def bsp int bre als stream
这道题目很简单,就是表达式的计算问题。注意这个里面使用的表达式的计算方式,仅限于这道题目中定义的合法的表达式。
另外,发现我自己有点魔怔了,连输入的方式都非要这样那样了。是该总结一下,输入的所有方式了。
下面贴出这道题的代码:
#include<cstdio> #include<vector> #include<stack> #include<string> #include<iostream> using namespace std; int num_matri; struct Matric { int row; int col; }matric[26]; int main() { #ifdef local freopen("input.txt","r",stdin); #endif scanf("%d",&num_matri); for(int i=0;i<num_matri;i++)//输入矩阵 { char alph[2]; scanf("%s",alph); int row,col; scanf("%d%d",&row,&col); matric[alph[0]-‘A‘].row=row; matric[alph[0]-‘A‘].col=col; } string line; while(cin>>line)//输入保证合法,括号可以不入栈 { stack<Matric>Stack; int num=0; bool error=false; for(int i=0;i<line.size();i++) { if(line[i]==‘(‘) continue; if(isalpha(line[i])) { Stack.push(matric[line[i]-‘A‘]); } if(line[i]==‘)‘) { Matric a=Stack.top();//结构体可以给结构体赋值,大整数类是因为赋值的时候不是大整数类赋的值 Stack.pop(); Matric b=Stack.top(); Stack.pop(); if(b.col!=a.row) { error=true; break; } Matric c; c.row=b.row; c.col=a.col; Stack.push(c); num+=c.row*c.col*b.col; } } if(error) { printf("error\n"); } else { printf("%d\n",num); } } return 0; }
标签:矩阵 i++ for def bsp int bre als stream
原文地址:https://www.cnblogs.com/TorettoRui/p/10425781.html