0 ( 0 | 1 )*101

最简DFA:

View Code

1 #include < cstdio >
2 #include < cmath >
3 #include < cstdlib >
4 #include < cstring >
5 #include < cctype >
6 #include < vector >
7 #include < map >
8 #include < queue >
9 #include < list >
10 #include < stack >
11 #include < bitset >
12 #include < set >
13 #include < fstream >
14 #include < sstream >
15 #include < iomanip >
16 #include < algorithm >
17 #include < iostream >
18
19
20   using namespace std;
21
22 FILE * fin = stdin;
23 FILE * fout = stdout;
24
25
26
27   enum STATE
28 {
29 ss,
30 sa,
31 sb,
32 sc,
33 sz
34 };
35 STATE state;
36 struct State_Trans
37 {
38 STATE s;
39 char ch;
40
41 State_Trans(STATE state = sa, char c = ' \0 ' )
42 : s(state), ch(c)
43 {}
44
45 bool operator < ( const State_Trans & other) const
46 {
47 if ( this -> s != other.s)
48 return this -> s < other.s;
49 else
50 return this -> ch < other.ch;
51 }
52 };
53
54
55
56
57
58 int main()
59 {
60 map < State_Trans, STATE > transtbl;
61 transtbl.insert(make_pair(State_Trans(ss, ' 0 ' ), sa));
62 transtbl.insert(make_pair(State_Trans(sa, ' 0 ' ), sa));
63 transtbl.insert(make_pair(State_Trans(sa, ' 1 ' ), sb));
64 transtbl.insert(make_pair(State_Trans(sb, ' 0 ' ), sc));
65 transtbl.insert(make_pair(State_Trans(sb, ' 1 ' ), sb));
66 transtbl.insert(make_pair(State_Trans(sc, ' 0 ' ), sa));
67 transtbl.insert(make_pair(State_Trans(sc, ' 1 ' ), sz));
68 transtbl.insert(make_pair(State_Trans(sz, ' 0 ' ), sc));
69 transtbl.insert(make_pair(State_Trans(sz, ' 1 ' ), sb));
70 string str;
71 while (cin >> str)
72 {
73 state = ss;
74 for ( int i = 0 ; i != str.size(); ++ i)
75 {
76 if (str[i] == ' ' || str[i] == ' \t ' )
77 continue ;
78 char ch = str[i];
79
80 if ( ! (ch == ' 0 ' || ch == ' 1 ' ))
81 break ;
82 if (transtbl.find(State_Trans(state, ch)) == transtbl.end())
83 break ;
84 state = transtbl[State_Trans(state, ch)];
85 }
86 if (state == sz)
87 cout << " _______ math _________ " << endl;
88 else
89 cout << " not math " << endl;
90 }
91
92 return 0 ;
93 }

转载于:https://www.cnblogs.com/invisible/archive/2011/04/28/2031915.html

dfa 识别 正则表达式 0(0|1)*101相关推荐

  1. dfa转正则表达式_从0到1打造正则表达式执行引擎(二)

    本文原文地址https://blog.csdn.net/xindoo/article/details/106458165 在上篇博客从0到1打造正则表达式执行引擎(一)中我们已经构建了一个可用的正则表 ...

  2. 【编译原理笔记03】词法分析:正则表达式、有穷自动机(FA)、DFA与NFA及RE的相互转换、DFA识别单词、语法检测

    本次笔记内容: 3-1 正则表达式 3-2 正则定义 3-3 有穷自动机 3-4 有穷自动机的分类 3-5 从正则表达式到有穷自动机 3-6 从NFA到DFA的转换 3-7 识别单词的DFA 文章目录 ...

  3. linux手写数字识别,OpenCV 3.0中的SVM训练 mnist 手写字体识别

    前言: SVM(支持向量机)一种训练分类器的学习方法 mnist 是一个手写字体图像数据库,训练样本有60000个,测试样本有10000个 LibSVM 一个常用的SVM框架 OpenCV3.0 中的 ...

  4. 天池学习赛——街景字符编码识别(得分上0.93)

    项目代码已上传至github需要的可以自行下载 目录 1 比赛介绍 2 解题思路 3 比赛数据集 4 模型训练 5 更改detect.py文件 6 上传文件 1 比赛介绍 项目链接:零基础入门CV - ...

  5. 中安财报影像识别系统V2.0,为您摘下“紧箍咒

    中安财报影像识别系统V2.0,为您摘下"紧箍咒 财务报表包含资产负债表.现金流表.利润表,是公司进行信贷审批.财务审计时的主要依据.财务报表核查,对于银行卡信贷审批.企业信用审核等行业的工作 ...

  6. 小新700linux网卡驱动,小新Air14网卡驱动2024.0.2.101/12.0.0.725版下载,适用于Win10-64-驱动精灵...

    驱动说明: 驱动描述: 适用于Lenovo联想小新 Air 14显卡笔记本的无线网卡驱动 适用于Realtek 8821CE Wlan,Realtek 8822BE Wlan,Qualcomm Ath ...

  7. 正则表达式-大于等于0最多三位小数

    正则表达式 public static void main(String[] args) {String pattern = "([0-9]\\d*( \\.\\d{1,2})?|0\\.[ ...

  8. 华为鸿蒙系统描述文件,华为鸿蒙HarmonyOS Beta3 2.0.0.101版

    华为鸿蒙HarmonyOS Beta3 2.0.0.101版本安装包,凌晨的时候华为已经开启了全新版本的系统,让华为用户们可以自主选择是否要升级系统,不少网友们都默默的升级了系统,不过也有不少华为用户 ...

  9. 中安OCR文字识别系统V5.0 ——OCR文字识别开发包SDK

    一.中安OCR文字识别系统V5.0简介 中安OCR文字识别系统V5.0是一种光学字符识别(OCR)软件开发包(OCR SDK):中安OCR文字识别系统V5.0为软件开发人员.系统集成商.数据加工商(B ...

最新文章

  1. 封神召唤师显示服务器爆满,封神召唤师总是显示无法连接网络
  2. 超过200m文件发送_喜大普奔!微信官宣:最高支持200M高清视频、图片文件!
  3. WSL:WSL(Windows Subsystem for Linux)的简介、安装、使用方法之详细攻略
  4. c#图片base64去转义字符_C#实现字符串与图片的Base64编码转换操作示例|chu
  5. 三本新书(包含新系列)隆重上市
  6. C语言 - 快速排序算法
  7. show Locks LockManager not specified解决
  8. html之marquee详解
  9. docker部署python web应用_安装docker并部署web项目
  10. #{}不自动改参数类型_C++笔记——参数传递中的指针传递和引用传递
  11. 关于Visual Studio “当前不会命中断点.还没有为该文档加载任何符号“的解决方法
  12. 三菱st语言编译后报C9330,三菱plc编程用什么语言比较好?三菱编程语言的特点...
  13. 黑客Windows攻防初级知识点整合
  14. 成长笔记之博客统计第一篇
  15. Python学习笔记7-函数
  16. 酷比魔方 iwork10旗舰版恢复出厂设置遇到的问题
  17. Excel表格自动化办公(持续更新)
  18. QWERTY键盘排列的历史
  19. aspose.slides-15.9.0 将ppt转为pdf,去除水印
  20. linux系统连接不上wifi

热门文章

  1. NBA2k系列服务器停服问题,服务器没弄好就上线了?《NBA2K20》被大量玩家吐槽
  2. make出错,编译通不过的解决办法
  3. Moblin授权中心在台北挂牌开业
  4. 【C/C++】基础概念
  5. GBK转UTF8汉字数量为奇数位时,多出来的末尾汉字会乱码
  6. TiDB 在金融行业关键业务场景的实践(下篇)
  7. win11系统苹果电脑如何安装 Windows11绕过tpm限制在苹果电脑进行安装的步骤方法
  8. SAP CRM CL_CRM_BOL_ENTITY实例的sendable属性是什么时候置位的
  9. 文章学习(一)方法类:利用CNN从专利图像导出设计特征向量
  10. 数列 COGS1048:[Citric S2] 一道防AK好题