栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2792 Brackets Removal

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2792 Brackets Removal

#include<cstdio>#define MAXN 1010using namespace std;struct ops{    int l,r,pr;    char op;};ops o[MAXN];char s[MAXN];int k,p;int expr();int createOps(int l,int r,char op,int pr){    k++;    o[k].l=l;    o[k].r=r;    o[k].pr=pr;    o[k].op=op;    return k;}int factor(){    int ret;    if(s[p]>='a'&&s[p]<='z')        ret=createOps(0,0,s[p++],3);    else    {        p++;        ret=expr();        p++;    }    return ret;}int term(){    int l,r,ret;    char op;    l=factor();    while(s[p]=='*'||s[p]=='/')    {        op=s[p++];        r=factor();        l=createOps(l,r,op,2);    }    return l;}int expr(){    int l,r;    char op;    l=term();    while(s[p]=='+'||s[p]=='-')    {        op=s[p++];        r=term();         l=createOps(l,r,op,1);    }    return l;}void Print(int n,bool inverse){    int l,r;    if(o[n].op>='a'&&o[n].op<='z')    {        putchar(o[n].op);        return;    }    l=o[n].l;    r=o[n].r;    if(o[l].pr>o[n].pr)        Print(l,false);    else if(o[l].pr<o[n].pr)    {        putchar('(');        Print(l,false);        putchar(')');    }    else        Print(l,inverse);    if(!inverse)        putchar(o[n].op);    else if(o[n].op=='+')        putchar('-');    else if(o[n].op=='-')        putchar('+');    else if(o[n].op=='*')        putchar('/');    else        putchar('*');    if(o[r].pr>o[n].pr)        Print(r,false);    else if(o[r].pr<o[n].pr)    {        putchar('(');        Print(r,false);        putchar(')');    }    else    {        if(o[n].op=='-'||o[n].op=='/') inverse=!inverse;        Print(r,inverse);    }}int main(){    gets(s);    k=p=0;    int n=expr();    Print(n,false);    return 0;    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/380061.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号