131-有确定性的有穷自动机

#include <stdio.h>  //s为初态,z为终态
int in(int s,int z)
{
    if(s == z)
    {
        printf("3\nlook!the last status belongs to 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]!=‘\n‘;i++)
    {
        printf("%2d",s);

        s = step(s,input[i]);
    }
    if(in(s,z))
    {
        return 1;
    }
    else
    {
        return 0;

    }
}
main() {
    int i;
    int a;
    char input[40];
    printf("FA=({0,1,2,3},{a,b},M,0,{3})\n");
    printf("M:\n");
    printf("    M(0,a)=1    M(0,b)=2\n");
    printf("    M(1,a)=3    M(1,b)=2\n");
    printf("    M(2,a)=1    M(2,b)=3\n");
    printf("    M(3,a)=3    M(3,b)=3\n");
    printf("请输入你要检查的串");
lop:
    for(i=0;input[i-1] != ‘\n‘;i++)
    {
        scanf("%c",&input[i]);
    }
    for(i=0;input[i-1]!=‘\n‘;i++)
    {
        if(input[i] != ‘a‘&&input[i] != ‘b‘&&input[i] != ‘\n‘)
        {
            printf("input error,enter again please:\n");
            goto lop;
        }
    }         printf("the status sequence is :\n");
    a = realize(input);
    if(a == 1)
        printf("\nSo this string can be identified\n");
    else
        printf("\nSo this string can‘t be identified\n");
    printf("press enter to exit the program\n");
    getchar();
}
时间: 2024-10-03 06:09:02

131-有确定性的有穷自动机的相关文章

129-有确定性的有穷自动机

#include <stdio.h> //s为初态,z为终态 int in(int s,int z) { if(s == z) { printf("3\nlook!the last status belongs to 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:ret

有确定性的有穷自动机

#include <stdio.h> //s为初态,z为终态 int in(int s,int z) { if(s == z) { printf("3\nlook!the last status belongs to 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:ret

107-有确定性的有穷自动机

#include <stdio.h> //s为初态,z为终态 int in(int s,int z) { if(s == z) { printf("3\nlook!the last status belongs to 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:ret

字符串匹配算法 之 基于DFA(确定性有限自动机)

确定有限自动机定义:http://en.wikipedia.org/wiki/Deterministic_finite_automaton 自动机在字符串匹配中的应用 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #define ALPHABETLENGTH 53 5 #define GETMIN(x,y) ((x)<=(y)?(x):(y)) 6 7 //判定pattern的前k个

最新高速ICD.Stackup.Planner.v2016.131

最新高速ICD.Stackup.Planner.v2016.131    每一层,一个多层的印刷电路板,可以有一个非常不同的传播速度.这是特别重要的最新高速DDR3 / 4内存设备.新的"相对信号传播"特征,对ICD的层叠计划,不仅让你的比赛长的公交车,但这一步需要进一步通过自动模拟适当长度所需的延迟完全匹配.QQ:16264558      TEL:13963782271 ICD.Stackup.Planner.v2016.131 VMGSIM.V9.5.47 Bentley.Mic

14.2 “1-3-1”宽度适应布局

“1-3-1”布局可以产生很多不同的变化方式,如下: ● 三列都按比例来适应宽度: ● 一列固定,其他两列按比例适应宽度: ● 两列固定,其他一列适应宽度. 对于后两种情况,又可以根据特殊的一列与另外两列的不同位置,产生出若干种变化.这就像武侠小说中的武功,武林秘籍中的招数总是有限的.而实战中的变化则是无穷的.关键在于是否真正把其中的原理吃透了.最高的武功是所谓“大象无形”的境界,招数已经不重要了. 一.“1-3-1”三列宽度等比例布局 对于“1-3-1”布局的第一种情况,即三列按固定比例伸缩适

确定性这剂毒药,你喝过没

假如你如今想换工作,你会怎么选择呢?薪水够多.工作够轻松,不加班,目标职位须要的技能你又刚好会,离家近,奖金多?满足这样要求的单位就能够去了.去了就会如你所愿一切都非常美好? 假如你是个程序猿,不想做软件开发了,想转行.有几个选择:IT培训讲师.NLP教练.开咖啡馆.淘宝开店卖家具.你会选择哪个? 我去參加职业规划师的培训,同期的学员中有非常多都是在单位里从事某种工作,HR.財会.猎头.开发.引导师,这里面会有多少人立刻出来专门从事职业规划师这个职业?我和几位老师聊过,由于所处地域的市场还在培育

131. 132. Palindrome Partitioning *HARD* -- 分割回文字符串

131. Palindrome Partitioning Given a string s, partition s such that every substring of the partition is a palindrome. Return all possible palindrome partitioning of s. For example, given s = "aab",Return [ ["aa","b"], ["

正规式转换为有穷自动机

1 #include<stdio.h> 2 #include <ctype.h> 3 #define ok 1 4 #define error 0 5 #define MAXREGLUARLONG 40 6 #define MAXSTATELONG 40 7 #define MAXCAHRSLONG 40 8 typedef int state; 9 int iCurrentState=0; //初态以1开始 10 int iPreState=0; 11 int iLastFork