栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3228 Searching the String

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3228 Searching the String

#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N=100010;const int kind=26;struct TRIE{    int next[kind];    int overlap,nonoverlap;    int end;    void init()    {        memset(next,0,sizeof(next));        overlap=nonoverlap=0;        end=-1;    }}trie[N*6];int root,tot;char str[N];void init(){    root=tot=0;    trie[root].init();}void insert(char *s,int pos){    int r,i=0,index;    r=0;    while(s[i])    {        index=s[i]-'a';        if(!trie[r].next[index])        { trie[++tot].init(); trie[r].next[index]=tot;        }        r=trie[r].next[index];        trie[r].overlap++;        if(trie[r].end<pos)        { trie[r].nonoverlap++; trie[r].end=pos+i;        }        i++;    }}void query(int op,char *s){    int i=0,index,r;    r=0;    while(s[i])    {        index = s[i] - 'a';        if(!trie[r].next[index])        { printf("0n"); return ;        }        r=trie[r].next[index];        i++;    }    if(op==0)        printf("%dn",trie[r].overlap);    else if(op==1)        printf("%dn",trie[r].nonoverlap);}int main(){    int i,j,q,op,len,cas=1;    char sub[10];    while(scanf("%s",str)!=EOF)    {        init();        len=strlen(str);        for(i=0;i<len;i++)        { for(j=0;j<6 && i+j<len;j++)     sub[j]=str[i+j]; sub[j]=0; insert(sub,i);        }        scanf("%d",&q);        printf("Case %dn",cas++);        for(i=0;i<q;i++)        { scanf("%d%s",&op,sub); query(op,sub);        }        printf("n");    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375067.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号