| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 513 人关注过本帖
标题:放下代码,识别尾部以01结尾的0和1的串 自动机NFA实现
只看楼主 加入收藏
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
结帖率:59.52%
收藏
已结贴  问题点数:10 回复次数:1 
放下代码,识别尾部以01结尾的0和1的串 自动机NFA实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int get_one_char(char *str,int i)
{
    if(*(str+i)=='\0')
        return 3;
    if(*(str+i)=='0')
        return 0;
    if(*(str+i)=='1')
        return 1;
}

void query_table(int a[3],int (*statustable[3][2])[3],int one_zero)
{
    int b[3]={3,3,3};
    int i=0,j;
        for(j=0;i<3;i++){
            if(a[i]!=3){
             for(j=0;j<3;j++){
                if(statustable[a[i]][one_zero]!=NULL){
                    if((b[j]!=*(*statustable[a[i]][one_zero]+j))&&*(*statustable[a[i]][one_zero]+j)!=3)
                        b[j]=*(*statustable[a[i]][one_zero]+j);
                    
                        
                }
                        
            }
        
        }   
        }
    for(i=0;i<3;i++){
        a[i]=b[i];
    }

}

int give_result(int a[3])
{
    int i,n=0;
    for(i=0;i<3;i++)
        if(a[i]==2){
            n=1;
        }
    if(n==1)
        return 1;
    else
        return 0;
            
}

int main()
{
    int a[3][3]={{0,1,3},
                 {0,3,3},
                 {3,3,2}
                 };
    int (*(b[3][2]))[3]={{a+0,a+1},
                         {NULL,a+2},
                         {a+2,a+2}
                        };
   
    int statu[3],i,c,m=1,h;
    char str[100];
        
    for(i=0;i<3;i++){
        statu[i]=a[1][i];
        
    }
    scanf("%s",str);
    i=0;   
       while((c=get_one_char(str,i))!=3){
           if(m>1){
               statu[2]=3;
   
           }   
           query_table(statu,b,c);
           if(give_result(statu)){
               m++;
           }
           //for(h=0;h<3;h++)
//               printf("%d",statu[h]);
   //        printf("\n");
           i++;
       }
       if(give_result(statu) )
           printf("yes!\n");
    else
        printf("no!\n");
   
}
搜索更多相关主题的帖子: include return 自动机 
2014-02-26 12:52
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:10 
这是个晒代码的帖子麽?


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2014-02-26 15:34
快速回复:放下代码,识别尾部以01结尾的0和1的串 自动机NFA实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031683 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved