📄 2189.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 2189 on 2006-04-04 at 11:06:41 */
#include <cstdio>
#include <cctype>
const int MAX = 1024000;
int var[MAX], vt;
int com(int, char, int);
void vpop(char);
int main()
{
char stack[MAX], ch;
while((ch = getchar()) != EOF) {
ungetc(ch, stdin);
int st = vt = 0; stack[st++] = '(';
char pc = '(';
while(true) {
ch = getchar();
if(ch == '\n' || ch == ')') {
while(stack[--st] != '(') vpop(stack[st]);
if(ch == '\n') break;
} else if(ch == '(') stack[st++] = '(';
else if(isdigit(ch)) {
ungetc(ch, stdin);
scanf("%d", &var[vt++]);
} else {
if(pc == '(') var[vt++] = 0;
while(stack[st-1] != '(') vpop(stack[--st]);
stack[st++] = ch;
}
pc = ch;
}
printf("%d\n", var[0]);
}
return 0;
}
int com(int a1, char op, int a2)
{
switch(op) {
case '+': return a1+a2;
default: return a1-a2;
}
}
void vpop(char op)
{
var[vt-2] = com(var[vt-2], op, var[vt-1]);
vt--;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -