zoukankan      html  css  js  c++  java
  • 实验三 有限自动机的构造与识别

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #define MAX 101
    int n=1;
    void tackBack(char ch[],int start,int end,int begain,int final);
    int main(){
        char ch[MAX];
        int size;
        scanf("%s",ch);
        size=strlen(ch);
        tackBack(ch,0,size,0,1);
        return 0;
    }
    
    void tackBack(char ch[],int start,int end,int begain,int final)
    {
        
        int i=start;    
        while(!(ch[i] == '|') && i<end)
            i++;
        if(ch[i]=='|'){
            tackBack(ch,start,i-1,begain,final);
            tackBack(ch,i+1,end,begain,final);    
        }
        i=start;
        //printf("start=%d	end=%d
    ",start,end);
        
        if(ch[i]>='a' && ch[i]<='z')
        {
            if(ch[i+1]=='.')
            {
                n++;
                printf("f<%d,%c>=%d
    ",begain,ch[i],n);                
            }
            else if(ch[i+1]=='*')
            {
                n++;
                printf("f(%d,~)=%d
    ",begain,n);
                printf("f(%d,~)=%d
    ",n,final);
                printf("f(%d,%c)=%d
    ",n,ch[i],n);
            }
        }    
        i+=2;
        while(i<end)
        {
            if(ch[i]>='a' && ch[i]<='z')
            {
                if(ch[i+1]=='.')
                {
                    printf("f<%d,%c>=%d
    ",n,ch[i],n+1);        
                    n++;
                }
                else if(ch[i+1]=='*')
                {
                    n++;
                    printf("f(%d,~)=%d
    ",begain,n);
                    printf("f(%d,~)=%d
    ",n,final);
                    printf("f(%d,%c)=%d
    ",n,ch[i],n);
                }
            }    
            i++;
        }
        if(ch[i]>='a' && ch[i]<='z')
        {
            
            if(ch[i+1]=='*')
            {
                printf("f(%d,%c)=%d
    ",n,ch[i],final);
            }
            else
            {
                printf("f<%d,%c>=%d
    ",n,ch[i],final);
            }
        }
    
    }

    实验结果

  • 相关阅读:
    Fragment_3_Androidx中返回键的处理
    2.2.3.Architecture components_View Binding
    2.2.2.Architecture components_data binding2_源码分析
    经典排序
    动态规划求解最长公共子序列
    全排列问题
    钢条切割
    KMP
    Queue
    Stack
  • 原文地址:https://www.cnblogs.com/wxf2/p/6117196.html
Copyright © 2011-2022 走看看