九度OJ 1101:计算表达式 (DP)
- 题目描述:
-
对于一个不存在括号的表达式进行计算
- 输入:
-
存在多种数据,每组数据一行,表达式不存在空格
- 输出:
-
输出结果
- 样例输入:
-
6/2+3+3*4
- 样例输出:
-
18
思路:
动态规划题,程序过程中保存两个数和中间的操作数即可。
代码:
#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 ****************************************************************/
编程算法爱好者。