首页 > 代码库 > 有穷自动机转换
有穷自动机转换
#include<stdio.h> #define M 100 char str[M][M]; void Go(char ch); main() { char ch; printf("\n输入需要识别的字符(以#结束):"); ch=getchar(); Go(ch); } void Go(char ch) { int i=0,j=0,k,s,n,sum; while(ch!=‘#‘) { while(ch==‘|‘) { str[i][j]=‘\0‘; j=0; i++; ch=getchar(); } str[i][j]=ch; j++; ch=getchar(); } str[i][j]=‘\0‘; sum=2; for(k=0;k<=i;k++) { s=0; n=1; while(str[k][s]!=‘\0‘) { if(str[k][s]==‘.‘||str[k][s]==‘*‘) { if(str[k][s]==‘.‘&&n==1) { n++; printf("\nf(0,%c)=%d\n",str[k][s-1],sum); if(str[k][s+2]==‘\0‘) printf("\nf(%d,%c)=1\n",sum,str[k][s+1]); sum=sum+1; } else if(str[k][s]==‘.‘&&n!=1) { n++; printf("\nf(%d,%c)=%d\n",sum-1,str[k][s-1],sum); if(str[k][s+2]==‘\0‘) printf("\nf(%d,%c)=1\n",sum,str[k][s+1]); sum=sum+1; } else if(str[k][s]==‘*‘&&n==1) { n++; printf("\nf(0,~)=%d\n",sum); printf("\nf(%d,%c)=%d\n",sum,str[k][s-1],sum); if(str[k][s+1]==‘\0‘) printf("\nf(%d,~)=1\n",sum); else printf("\nf(%d,~)=%d\n",sum,sum+1); sum=sum+1; } else if(str[k][s]==‘*‘&&n!=1) { n++; printf("\nf(%d,%c)=%d\n",sum,str[k][s-1],sum); if(str[k][s+1]==‘\0‘) printf("\nf(%d,~)=1\n",sum); else printf("\nf(%d,~)=%d\n",sum,sum+1); sum=sum+1; } } s++; } } }
有穷自动机转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。