nyoj 128 前缀式计算 模拟水题 回溯

题目中文的我就不多说了。

回溯水题,模拟一下就行了。

代码:

 
#include <cstdio>
#include <cstring>

double solve(char o) {
	char op[10];
	double o1, o2;
	scanf("%s", op);
	if (op[0] >= '0' && op[0] <= '9')
		sscanf(op, "%lf", &o1);
	else 
		o1 = solve(op[0]);
	scanf("%s", op);
	if (op[0] >= '0' && op[0] <= '9')
		sscanf(op, "%lf", &o2);
	else 
		o2 = solve(op[0]);
	switch(o) {
		case '+': return o1 + o2;
		case '-': return o1 - o2;
		case '*': return o1 * o2;
		case '/': return o1 / o2;
	}
}

int main() {
	char op[5];

	while (scanf("%s", op) != EOF) {
		printf("%.2lf
", solve(op[0]));
	}
	return 0;
}