码迷,mamicode.com
首页 > 其他好文 > 详细

Pj Immediate Decodability

时间:2018-06-25 20:35:54      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:oda   ++   没有   div   else   names   continue   false   +=   

判断一个串是否是其他的前缀

我们需要建立一颗tire树

在插入边的时候,如果遇到一个其他串的结尾,那么就说明至少有一个串,是插入串的前缀。如果在插入完后没有新增的节点,那么插入的串就是其他串的前缀

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
const int manx=1<<8;
char data[manx];
int t[manx][2],tail;
int end[manx<<8];
bool flag=false;
void ins()
{
    int last=tail,now=0;
    int len=strlen(data)-1;
    for(int i=0;i<=len;i++)
    {
        int nxt=data[i]-'0';
        if(!t[now][nxt])    t[now][nxt]=++tail;
        if(end[now])    flag=true;//经过一个串的结尾
        now=t[now][nxt];
    }
    end[now]+=1;
    if(last==tail)  flag=true;//是其他串的前缀
    return ;
}
int main()
{
    int tot=0;
    //freopen("a.in","r",stdin);
    while(scanf("%s",data)!=EOF)
    {
        if(data[0]=='9')
        {
            tot+=1;
            if(!flag)
                printf("Set %d is immediately decodable\n",tot);
            else
            {
                printf("Set %d is not immediately decodable\n",tot);
            }//每一组数据都要初始化
            flag=false;
            memset(t,0,sizeof(t));
            memset(end,0,sizeof(end));
            tail=0;
            continue;
        }
        if(!flag)   ins();
    }
}

Pj Immediate Decodability

标签:oda   ++   没有   div   else   names   continue   false   +=   

原文地址:https://www.cnblogs.com/Lance1ot/p/9225816.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!