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

模拟。这个不知道。。 a,b,……到z 依次为1到26,然后给你一表达式 前置++和前置-- 都先运算, 后置++和后置--都后运算,然后判断表达式的值。和最后各个字母的值 作法比较奇怪。。 先...

UVA_327_Evaluating Simple C Expressions

#include #include #include #include #include #include #include #include ...

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

题目大意:根据 ++、– 的性质计算,a = 1,b = 2……z = 26。输出计算结果和计算后各字母的值。解题思路:暴力模拟。每碰到一个字母,检查该字母前后是否存在前缀,若存在,将改字母对应的值 ...

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

The task in this problem is to evaluate a sequence of simple C expressions, buy you need not know C ...

UVA - 327 Evaluating Simple C Expressions

2016.11.10 UVA - 327 Evaluating Simple C Expressions 题目大意:根据 ++、-- 的性质计算,a = 1,b = 2……z = ...

uva 327 Evaluating Simple C Expressions

题目:简单的语义分析程序,判断表达式,有自加和自减,在字母的前后不同位置做不同的处理 注意:string中erase可以方便的去掉一个字符,同时不要忘记循环中i--(因为变短了) #include...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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