首页 > 代码库 > 简易自动机
简易自动机
#include<stdio.h> #define MAX 20 main() { int i=0,j=0,k,l,m,n,number; char ch; char a[MAX][MAX]; printf("请输入正规式:"); ch=getchar(); while(ch!=‘\n‘) { if(ch==‘/‘) { a[i][j]=‘\0‘; j=0; i++; ch=getchar(); continue; } a[i][j]=ch; j++; ch=getchar(); } a[i][j]=‘\0‘; number=2; for(k=0;k<=i;k++) { l=0; m=1; while(a[k][l]!=‘\0‘) { if(a[k][l]==‘.‘||a[k][l]==‘*‘) { if(a[k][l]==‘.‘&&m==1) { m++; printf("f(0,%c)=%d\n",a[k][l-1],number); if(a[k][l+2]==‘\0‘) printf("f(%d,%c)=1\n",number,a[k][l+1]); number=number+1; } else if(a[k][l]==‘.‘&&m!=1) { m++; printf("f(%d,%c)=%d\n",number-1,a[k][l-1],number); if(a[k][l+2]==‘\0‘) printf("f(%d,%c)=1\n",number,a[k][l+1]); number=number+1; } else if(a[k][l]==‘*‘&&m==1) { m++; printf("f(0,~)=%d\n",number); printf("f(%d,%c)=%d\n",number,a[k][l-1],number); if(a[k][l+1]==‘\0‘) printf("f(%d,~)=1\n",number); else printf("f(%d,~)=%d\n",number,number+1); number=number+1; } else if(a[k][l]==‘*‘&&m!=1) { m++; printf("f(%d,%c)=%d\n",number,a[k][l-1],number); if(a[k][l+1]==‘\0‘) printf("f(%d,~)=1\n",number); else printf("f(%d,~)=%d\n",number,number+1); number=number+1; } } l++; } } }
转自队长
简易自动机
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。