题目链接
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int ok(char ch, char sh)
{
if(sh == '(')return 1;
if((ch == '*' || ch == '/' || ch == '%') && (sh == '+' || sh =='-'))
return 1;
else return -1;
}
int main()
{
int i = 0,n, top = -1;
char exp[1055], str[1005], ch;
while(~scanf("%c", &ch) && ch != '#')
{
if(ch >= 'a' && ch <= 'z')exp[i++] = ch;
else if(ch == '(') str[++top] = ch;
else if(ch == ')')
{
while(top != -1)
{
exp[i ++] = str[top];
top --;
if(str[top] == '(')
{
top --;
break;
}
}
}
else {
if(top == -1 || ok(ch,str[top]) > 0)
{
str[++top] = ch;
}
else
{
while(top >= 0 && ok(ch,str[top]) < 0)
{
exp[i ++] = str[top--];
}
str[++top] = ch;
}
}
}
while(top != -1)
{
exp[i++] = str[top--];
}
exp[i] = ' ';
printf("%s
",exp);
return 0;
}