码迷,mamicode.com
首页 > 其他好文 > 详细

UVA442

时间:2019-02-24 13:30:18      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:矩阵   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;
}

 

UVA442

标签:矩阵   i++   for   def   bsp   int   bre   als   stream   

原文地址:https://www.cnblogs.com/TorettoRui/p/10425781.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!