码迷,mamicode.com
首页 > 其他好文 > 详细

有穷自动机的转换

时间:2016-12-16 23:20:19      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:结束   log   ++   tin   include   pre   getc   r++   bsp   

 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 }

 

有穷自动机的转换

标签:结束   log   ++   tin   include   pre   getc   r++   bsp   

原文地址:http://www.cnblogs.com/crx234/p/6188540.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!