1260 文法语言
来源:互联网 发布:java捕获sql异常 编辑:程序博客网 时间:2024/04/28 12:24
- 描述
一个文法G[Z]有如下五条规则:
(1)Z→(U)
(2)Z→aUb
(3)U→dZ
(4)U→bU
(5)U→e
由此文法可以产生语言:比如:ad(be)b就是此文法的语言,因为有如下推导序列:
Z→aUb→adZb→ad(U)b→ad(bU)b→ad(be)b- 输入
有n+1行,第一行为测试数据的组数n。 下面有n行,每行为一个字符串。
- 输出
对每一组测试数据有一行输出,如果语言Σ是G[Z]产生的语言,则输出"Yes."如果不是则 输出"No".
- 样例输入
2abcsdf324sdad(be)b
- 样例输出
No.Yes.
- 提示
运用递归。
按照提示递归实现即可
#include <stdio.h>#include <string.h>char s[10001];int i;int flag;int flag1;void U();void Z();void Z(){ if(s[i]=='(') { i++; U(); if(s[i]==')') { i++; } else flag=1; } else if(s[i]=='a') { i++; U(); if(s[i]=='b') i++; else flag=1; } else flag=1;}void U(){ if(s[i]=='d') { i++; Z(); } else if(s[i]=='b'&&s[i+1]!='\0') { i++; U(); } else if(s[i]=='e') { i++; } else flag=1;}int main(){ int t,number,j; int length; scanf("%d",&number); for(t=1;t<=number;t++) { i=0; flag=0; scanf("%s",&s); length=strlen(s); for ( j=0;j<strlen(s);j++) { if (s[j]!='e'&&s[j]!='a'&&s[j]!='b'&&s[j]!='d'&&s[j]!='('&&s[j]!=')') { flag=1; break; } } if(flag==0) Z(); if(flag==0) printf("Yes.\n"); else printf("No.\n"); } return 0;}
- 1260 文法语言
- 文法和语言
- Hao语言--文法:
- C语言文法
- 文法与语言分类
- 文法和语言
- 文法和语言的分类
- 正规文法语言识别实现
- 编译原理:文法和语言
- 文法和语言的基本知识
- 文法和语言学习小结
- 编译原理--文法和语言
- 编译原理---文法和语言
- 文法和语言——文法的分类
- 文法
- 文法
- PL0文法编译器C语言源代码
- 编译原理文法语言递归实现
- jQuery 对话框(dialog)显示在屏幕中央
- 创业者如何打动投资者——创业态度决定一切
- 3. A bad workmen always blames his tools. 不会撑船怪河弯
- 材料库存天数的计算方法
- 1259 分时系统
- 1260 文法语言
- jQuery获取Select选择的Text和 Value
- SQL联合查询中的关键语法
- 1261 二十四点游戏
- char 转char*产生乱码
- android 访问/assets 和/res目录下文件的方法
- cocos2d-iPhone简介
- 1262 "A+B"
- 1264 魔术师