首页 > 其他 > 详细

有限自动机的实现

时间:2021-05-11 16:59:55      阅读:12      评论:0      收藏:0      [点我收藏+]

一、题目:已知DFA如下:
技术分享图片

请编程输出符号串aacd# 识别过程,如下表所示:
技术分享图片

二、源程序及运行结果截图
运行截图:
技术分享图片

源代码:

#include <iostream>
#include <malloc.h>
#include <string>
using namespace std;

typedef struct Node{
	int ind;
	struct Node *a, *b, *c, *d;
}Node;

Node *create_node(int a) {
	Node *p = (Node *)malloc(sizeof(Node));
	p->ind = a;
	p->a = p->b = p->c = p->d = NULL;
	return p;
}

Node *init_node() {
	Node *a = create_node(1);
	Node *b = create_node(2);
	Node *c = create_node(3);
	Node *d = create_node(4);
	a->a = c, a->b = b, b->d = d, c->a = c, c->c = b, c->d = d;
	return a;
}

int main() {
	Node *p = init_node(), *q = p;
	string st, at;
	int a;
	cin >> st;
	for (int i = 0; i < st.size(); i++) {
		a = q->ind;
		cout << q->ind << ‘\t‘ << st[i] << ‘\t‘;
		for (int j = i + 1; j < st.size(); j++) cout << st[j];
		if (!q) 
			if (st[i] != ‘#‘) return 1;
			else return 0;
		switch (st[i]) {
			case ‘a‘: q = q->a; break;
			case ‘b‘: q = q->b; break;
			case ‘c‘: q = q->c; break;
			case ‘d‘: q = q->d; break;
		}
		cout <<‘\t‘;
		q->ind == a && a == 4 && (cout << "OK" << ‘\t‘ << "接受" << endl, 1) || cout << q->ind << endl;
	} 
	return 0;
}

有限自动机的实现

原文:https://www.cnblogs.com/hhhahh/p/14754413.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!