为生存而奔跑

   :: 首页 :: 联系 :: 聚合  :: 管理
  271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

留言簿(5)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 319337
  • 排名 - 75

最新评论

阅读排行榜

评论排行榜

EBNF中
[]中的内容表示可以出现一次或0次
{}中的内容表示可以出现多次或0次
非终结符要放在单引号中
EOJ 2574 Principles of Compiler
#include<iostream>
using namespace std;
#define maxn 101
char s[maxn];
int cnt,flag;
 
void A();
void B();
void C();
 
void A()
{
    
if(s[cnt]=='x')
        cnt
++;
    
else if(s[cnt]=='(')
    
{
        cnt
++;
        B();
        
if(s[cnt]==')')
            cnt
++;
        
else flag=1;
    }

    
else flag=1;
}

 
void C()
{
    
if(s[cnt]=='+')
    
{
        cnt
++;
        A();
        C();
    }

    
else if(s[cnt]!='\0'&&s[cnt]!=')')
        flag
=1;
}

 
void B()
{
    A();
    C();
}

 
int main()
{
    
int t;
    scanf(
"%d",&t);
    getchar();
    
while(t--)
    
{
        gets(s);
        cnt
=flag=0;
        A();
        
if(flag==1||(s[cnt]!='\0')) printf("Bad\n");
        
else printf("Good\n");
    }

    
return 0;
}
posted on 2009-08-05 09:24 baby-fly 阅读(432) 评论(0)  编辑 收藏 引用 所属分类: Algorithm

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理