zoukankan      html  css  js  c++  java
  • 1203 有限自动机与构造

    #include<stdio.h>  
    #include<unistd.h>  
    #include<stdlib.h>  
    typedef int state;  
    typedef int condition;  
      
    #define STATENUM 4  
    #define STATE1 0  
    #define STATE2 1  
    #define STATE3 2  
    #define STATETRAP 3  
      
    #define CONDITIONS 2  
    #define CONDITION1 0  
    #define CONDITION2 1  
      
    typedef void (* actiontype)(state mystate,condition mycondition);  
    typedef struct{  
      state next;  
      actiontype action;  
    }trasition, *ptrasition;  
      
    void action1(state mystate,condition myconditon);  
    void action2(state mystate,condition myconditon);  
    void action3(state mystate,condition myconditon);  
    void actiontrap(state mystate,condition myconditon);  
    trasition t1={  
      STATE2,action1  
    };  
    trasition t2={  
      STATE3,action2  
    };  
    trasition t3={  
      STATE2,action3  
    };  
    trasition tt={  
      STATETRAP,actiontrap  
    };  
      
    void action1(state mystate,condition myconditon){  
      printf("action1 one triggered ");  
    }  
    void action2(state mystate,condition myconditon){  
      printf("action2 one triggered ");  
    }  
    void action3(state mystate,condition myconditon){  
      printf("action3 one triggered ");  
    }  
    void actiontrap(state mystate,condition myconditon){  
      printf("actiontrap one triggered ");  
    }  
      
    ptrasition transition_table[STATENUM][CONDITIONS] = {  
    /*      c1,  c2*/  
    /* s1 */&t1, &tt,  
    /* s2 */&tt, &t2,  
    /* s3 */&t3, &tt,  
    /* st */&tt, &tt,  
    };  
    typedef struct  
    {  
        state current;  
    } StateMachine, * pStateMachine;  
       
    state step(pStateMachine machine, condition mycondition)  
    {  
        ptrasition t = transition_table[machine->current][mycondition];  
        (*(t->action))(machine->current, mycondition);  
        machine->current = t->next;  
        printf("the current state is %d ",t->next );  
        return machine->current;  
    }  
    int main(int argc, char *argv[])  
    {  
      StateMachine mymachine;  
      mymachine.current=STATE1;  
      int mycon;  
      char ch;  
      while(1){  
        scanf("%d",&mycon);   
        step(&mymachine,mycon);  
      }  
      return 0;  
    }  
  • 相关阅读:
    【转】PHP foreach 小结
    【转】div,p,span,ul,li,dl,dt,dd,a,img,h,strong,em用法
    【转】网页制作中的CSS+DIV:dl,dt,dd分别表示什么意思啊?请说明啊,谢谢有什么功能?
    【转】[教程] CSS入门3:如何插入CSS样式
    PHP输出多个空格
    【转】浅谈HTTP中Get与Post的区别
    HDOJ 2433 Counter Strike 逆序对 线段树
    hdu 4193 Nonnegative Partial Sums 单调队列
    vijos 1750 建房子 单调队列
    poj 2155 Matrix 二维树状数组
  • 原文地址:https://www.cnblogs.com/wangjunjie123/p/5017403.html
Copyright © 2011-2022 走看看