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

来源:互联网 发布:网络安全员年薪多少 编辑:程序博客网 时间:2024/05/20 10:20

时间限制: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****************************************************************/


0 0
原创粉丝点击