uva 327 - Evaluating Simple C Expressions

原创 2013年12月02日 17:30:01
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cctype>
#include <cmath>
using namespace std;
int main()
{
    char s1[11000];
    while(gets(s1) != NULL)
    {
        printf("Expression: %s\n", s1);
        int al[30];
        for(int i = 1; i <= 26; ++i)
            al[i] = i;
        int len = strlen(s1);
        int k = 0;
        char s[11000];
        for(int i = 0; i < len; ++i)
            if(s1[i] != ' ')
                s[k++] = s1[i];
        len = k;
        int ans[11000];
        int len_ans = 0;
        bool vis[30];
        memset(vis, false, sizeof(vis));
        for(int i = 0; i < len; ++i)
        {
            if(isalpha(s[i]))
            {
                vis[s[i]-'a'+1] = true;
                if(i-2 >= 0 && s[i-1] == s[i-2])
                {
                    if(s[i-1] == '-') --al[s[i]-'a'+1];
                    else ++al[s[i]-'a'+1];
                    s[i-1] = s[i-2] = ' ';
                }
                ans[len_ans++] = al[s[i] - 'a' + 1];
                if(i+2 < len && s[i+1] == s[i+2])
                {
                    if(s[i+1] == '-') --al[s[i]-'a'+1];
                    else ++al[s[i]-'a'+1];
                    s[i+1] = s[i+2] = ' ';
                }
            }
        }
        int sum = ans[0];
        for(int i = 0, k = 1; i < len; ++i)
        {
            if(s[i] == '-')
                sum -= ans[k++];
            else if(s[i] == '+')
                sum += ans[k++];
        }
        printf("    value = %d\n", sum);
        for(int i = 1; i <= 26; ++i)
            if(vis[i])
                printf("    %c = %d\n", 'a'+i-1, al[i]);
        memset(s, 0, sizeof(s));
    }
    return 0;
}

//注意--  a的情况 

相关文章推荐

UVa 327 Evaluating Simple C Expressions (模拟)

327 - Evaluating Simple C Expressions Time limit: 3.000 seconds  http://uva.onlinejudge.org/index.ph...

UVA_327_Evaluating Simple C Expressions

#include #include #include #include #include #include #include #include ...
  • cxy7tv
  • cxy7tv
  • 2016年04月20日 16:35
  • 138

uva 327 - Evaluating Simple C Expressions

// uva 327 - Evaluating Simple C Expressions // 题目链接:http://uva.onlinejudge.org/index.php?option=com...

UVa 327 - Evaluating Simple C Expressions

按理说应该是一个二叉树的题,许久以前用数组做的 ~ 代码如下: #include #include char m[33][33]; int main() { #ifdef wct ...

uva 327 Evaluating Simple C Expressions

计算C表达式的值 直接模拟,不知为什么wa了 #include #include #define max 10010 char p[max],q[max],c[max]; int l; ...

uva 327 Evaluating Simple C Expressions 简易C表达式计算 stl模拟

由于没有括号,只有+,-,++,--,优先级简单,所以处理起来很简单。 题目要求计算表达式的值以及涉及到的变量的值。 我这题使用stl的string进行实现,随便进行练手,用string的eras...
  • hcbbt
  • hcbbt
  • 2013年07月16日 00:43
  • 2140

327 - Evaluating Simple C Expressions

#include #include #include int main() { int atoz[26],flag[26],i,result,operand,opersign; char e...
  • xj_347
  • xj_347
  • 2014年11月04日 14:25
  • 196

UVaOJ327---Evaluating Simple C Expressions

327 - Evaluating Simple C Expressions Time limit: 3.000 seconds The task in this problem is to...

327 Evaluating Simple C Expressions

描述:题目很简单,刚开始考虑问题时忽略了所有的字母所代表的值需要全部变化后才进行运算,结果交了几次错误代码,悲催啊…… #include #include #include ...

UVa 327 计算简单C表达式

题意:给出一个C表达式,计算其值。其中操作数只有26个字母,从a到z依次初始值为1到26;操作符有二位的 + 和二位的 - ,和正常意思一样,然后还有一位的自增 ++ 和一位的自减 - - ,都有前缀...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:uva 327 - Evaluating Simple C Expressions
举报原因:
原因补充:

(最多只允许输入30个字)