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();
    
     }
    

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

  • 相关阅读:
    sql 循环表中记录
    asp.net 上传XML,txt 直接读取文件内容
    两个表join 连接,去掉重复的数据
    图片横向显示
    接口测试
    find 命令
    Python 面向对象编程
    python之装饰器、生成器、内置函数、JSON
    python 之常用模块
    python 之函数
  • 原文地址:https://www.cnblogs.com/shadows24/p/6100008.html
Copyright © 2011-2022 走看看