zoukankan      html  css  js  c++  java
  • 有穷自动机()

    #include <stdio.h>
     //s为初态,z为终态
     int in(int s,int z)
    {
        if(s == z)
         {
            printf("
    这个状态属于 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]!='
    ';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})
    ");
         printf("M:
    ");
         printf("    M(0,a)=1    M(0,b)=2
    ");
         printf("    M(1,a)=3    M(1,b)=2
    ");
         printf("    M(2,a)=1    M(2,b)=3
    ");
         printf("    M(3,a)=3    M(3,b)=3
    ");
    
         printf("请输入你要检查的串:
    ");
    
     lop:    for(i=0;input[i-1] != '
    ';i++)
             {
                 scanf("%c",&input[i]);
             }
             for(i=0;input[i-1]!='
    ';i++)
             {
                 if(input[i] != 'a'&&input[i] != 'b'&&input[i] != '
    ')
                 {
                     printf("错误,重新输入字符串:
    ");
                     goto lop;
                 }
    
             }
             printf("这个状态序列 :
    ");
             a = realize(input);
             if(a == 1)
                 printf("
    这个字符串可以识别
    ");
             else
                 printf("
    这个字符串不能识别
    ");
             printf("按回车退出系统
    ");
             getchar();
    
     }
    

      参考了网上的,还不是很理解。

  • 相关阅读:
    三数之和
    罗马数字与整数
    Oracle 开启或关闭归档
    Oracle RMAN scripts to delete archivelog
    Oracle check TBS usage
    Oracle kill locked sessions
    场景9 深入RAC运行原理
    场景7 Data Guard
    场景4 Data Warehouse Management 数据仓库
    场景5 Performance Management
  • 原文地址:https://www.cnblogs.com/shadows24/p/6100008.html
Copyright © 2011-2022 走看看