九度OJ 1101:计算表达式 (DP)

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:4340

解决:1335

题目描述:

对于一个不存在括号的表达式进行计算

输入:

存在多种数据,每组数据一行,表达式不存在空格

输出:

输出结果

样例输入:
6/2+3+3*4
样例输出:
18
来源:
2010年上海交通大学计算机研究生机试真题

思路:

动态规划题,程序过程中保存两个数和中间的操作数即可。


代码:

#include<stdio.h>
 
int main(void)
{
        int a;
        char c;
        while(scanf("%d",&a) != EOF)
        {
                int e = 0,i = 0,b[100];
                b[++i] = a;
                while(scanf("%c",&c) != EOF && (c == '+' || c == '-' || c == '*' || c == '/'))
                {
                        scanf("%d",&a);
                        if(c == '+')
                                b[++i] = a;
                        if(c == '-')
                                b[++i] = -1 * a;
                        if(c == '*')
                                b[i] *= a;
                        if(c == '/')
                                b[i] /= a;
                }
                for(int j = 1; j <= i; ++j)
                        e += b[j];
                printf("%d\n",e);
        }
        return 0;
}
/**************************************************************
    Problem: 1101
    User: liangrx06
    Language: C
    Result: Accepted
    Time:0 ms
    Memory:912 kb
****************************************************************/


posted on 2015-10-23 16:59  梁山伯  阅读(297)  评论(0编辑  收藏  举报

导航