挑战:水能写出这个正则表达式? 由偶数个0和奇数个1构成的字符串...

GeniusViali 2004-04-03 11:05:30
编译原理的.....我不会...
...全文
2508 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengsf 2004-04-13
  • 打赏
  • 举报
回复
学习!!
wlamos 2004-04-12
  • 打赏
  • 举报
回复 1
这是陈意云老师习题集上的答案 :
even_0_even_1→(00|11)*((01|10)(00|11)*(01|10)(00|11)*)*
even_0_odd_1→1even_0_even_1|0(00|11)*(01|10)even_0_even_1
对于偶数个0和奇数个1构成的串,其第一个字符可能是0或1。
(1)如果是1,那么剩下的部分一定是偶数个0和偶数个1
(2)如果是0,那么经过若干个00或11,一定会出现一个01或10,才能保证0的个数是偶数,1的个数是奇数。若串还没有结束,剩余部分一定是偶数个0和偶数个1。
这样,正确的正规定义是:
even_0_odd_1→1even_0_even_1|0(00|11)*(01|10)even_0_even_1
注意:*均应在其左面第一个右括号的右上角,为书写方便直接写在了后面 :)
陈老师的书写的不错,看了收获很大!

Riemann 2004-04-06
  • 打赏
  • 举报
回复 1
(0(00|11)*(01|10) | 1)(00 | 11 | (10|01)(00|11)*(01|10))*
方法是首先画出DFA,再由DFA得到正则表达式。
xuelihuang 2004-04-04
  • 打赏
  • 举报
回复
这个问题,在陈意云的习题集中有详细的讲解,不妨看看
gnefuil 2004-04-03
  • 打赏
  • 举报
回复
还是不对,不好意思
gnefuil 2004-04-03
  • 打赏
  • 举报
回复
好像不对
应该是
|
( 0(11)*0 | (01(11)*0|1) (00|01(11)*10)* (1|0(11)*10) )*
|
gnefuil 2004-04-03
  • 打赏
  • 举报
回复
((1|010)((0|01(1*)10)*)(1|010))|(0(1*)0)

不知道这个对不对
GeniusViali 2004-04-03
  • 打赏
  • 举报
回复
TO dengsf(我希望我不菜) AND klky(klky):
能否具体说说?
klky 2004-04-03
  • 打赏
  • 举报
回复
用nfa图可以解决
dengsf 2004-04-03
  • 打赏
  • 举报
回复
我有个超长的,楼主就当是娱乐一下。

(1 | 0(00)*01 | 0(00)*1(1(00)*1)*(0 | 1(00)*01) )
( 11 | 10(00)*01 | (0|10(00)*01) (1(00)*1)* (0|1(00)*01) )*

直接根据转换规则做的,haha……
GeniusViali 2004-04-03
  • 打赏
  • 举报
回复
TO steel007(小宝):
你觉得 mysword(一怒拔剑) 加上你的那种情况就OK了?
steel007 2004-04-03
  • 打赏
  • 举报
回复
漏了种情况:(00|11)*1
steel007 2004-04-03
  • 打赏
  • 举报
回复
1(00|11)*
可不可以阿~~
GeniusViali 2004-04-03
  • 打赏
  • 举报
回复
啊?怎么有三个| ??? 上面和下面那个是什么意思?

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧