有穷自动机的转换
Posted 笑看风云动
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有穷自动机的转换相关的知识,希望对你有一定的参考价值。
1 #include<stdio.h> 2 main() 3 { 4 int i=0,j=0,x=0,y; 5 int number=2; 6 int count=0; 7 char ch; 8 char a[100][100]; 9 printf("请输入正规式以#结束 :\n"); 10 printf("^代表空\n"); 11 printf("|代表或\n"); 12 ch=getchar(); 13 do 14 { 15 if(ch==‘|‘) 16 { 17 a[i][j]=‘\0‘; 18 j=0; 19 i++; 20 ch=getchar(); 21 continue; 22 } 23 a[i][j]=ch; 24 j++; 25 ch=getchar(); 26 }while(ch!=‘#‘); 27 a[i][j]=‘\0‘; 28 for(x=0;x<=i;x++) 29 { 30 y=0; 31 count=1; 32 while(a[x][y]!=‘\0‘) 33 { 34 if(a[x][y]==‘.‘) 35 { 36 37 if(a[x][y]==‘.‘&& count==1) 38 { 39 printf("f(0,%c)=%d\n",a[x][y-1],number); 40 if(a[x][y+2]==‘\0‘) 41 printf("f(%d,%c)=1\n",number,a[x][y+1]); 42 number++; 43 count=2; 44 } 45 46 else if(a[x][y]==‘.‘&& count!=1) 47 { 48 49 printf("f(%d,%c)=%d\n",number-1,a[x][y-1],number); 50 if(a[x][y+2]==‘\0‘) 51 printf("f(%d,%c)=1\n",number,a[x][y+1]); 52 number++; 53 } 54 } 55 if(a[x][y]==‘*‘) 56 { 57 if(a[x][y]==‘*‘&& count==1) 58 { 59 printf("f(0,^)=%d\n",number); 60 printf("f(%d,%c)=%d\n",number,a[x][y-1],number); 61 if(a[x][y+1]==‘\0‘) 62 printf("f(%d,^)=1\n",number); 63 else 64 printf("f(%d,^)=%d\n",number,number+1); 65 number++; 66 count=2; 67 } 68 69 else if(a[x][y]==‘*‘&& count!=1) 70 { 71 72 printf("f(%d,%c)=%d\n",number,a[x][y-1],number); 73 if(a[x][y+1]==‘\0‘) 74 printf("f(%d,^)=1\n",number); 75 else 76 printf("f(%d,^)=%d\n",number,number+1); 77 number++; 78 } 79 } 80 y++; 81 } 82 } 83 84 }
以上是关于有穷自动机的转换的主要内容,如果未能解决你的问题,请参考以下文章