首页 > 代码库 > 有穷自动机()
有穷自动机()
#include <stdio.h> //s为初态,z为终态 int in(int s,int z) { if(s == z) { printf("\n这个状态属于 Z"); return 1; } else { return 0; } } //s为状态,t为输入的字符 int step(int s,char t) { if(t == ‘a‘) switch(s) { case 0:return 1; case 1:return 3; case 2:return 1; case 3:return 3; } else if(t == ‘b‘) switch(s) { case 0:return 2; case 1:return 2; case 2:return 3; case 3:return 3; } } int realize(char *input) { int z = 3; int s,i; s = 0; for(i=0;input[i]!=‘\n‘;i++) { printf("%2d",s); s = step(s,input[i]); } if(in(s,z)) { return 1; } else { return 0; } } main() { int i; int a; int x=1; char input[40]; printf("FA=({0,1,2,3},{a,b},M,0,{3})\n"); printf("M:\n"); printf(" M(0,a)=1 M(0,b)=2\n"); printf(" M(1,a)=3 M(1,b)=2\n"); printf(" M(2,a)=1 M(2,b)=3\n"); printf(" M(3,a)=3 M(3,b)=3\n"); printf("请输入你要检查的串:\n"); lop: for(i=0;input[i-1] != ‘\n‘;i++) { scanf("%c",&input[i]); } for(i=0;input[i-1]!=‘\n‘;i++) { if(input[i] != ‘a‘&&input[i] != ‘b‘&&input[i] != ‘\n‘) { printf("错误,重新输入字符串:\n"); goto lop; } } printf("这个状态序列 :\n"); a = realize(input); if(a == 1) printf("\n这个字符串可以识别\n"); else printf("\n这个字符串不能识别\n"); printf("按回车退出系统\n"); getchar(); }
参考了网上的,还不是很理解。
有穷自动机()
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。