码迷,mamicode.com
首页 > 编程语言 > 详细

HDU-1251 难题统计(Tire模板题,数组模拟写法)

时间:2020-02-03 22:28:15      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:模板   %s   span   col   iostream   color   str   bsp   pre   

题意:

给你一堆单词与询问,每次询问给一个字符串s问以s为前缀的字符串有多少

思路:

 

#include<iostream>
#include<algorithm>
#include<cstring>
 using namespace std;
 const int maxn=400009;
    struct tire{
        int ch[maxn][26];
        int val[maxn];
        int sz;
        void init(){
            sz=1;
            memset(ch[0],0,sizeof(ch[0]));
            val[0]=0;
        }
        int idx(char c){return c-a;}
        void insert(char *s){
            int u=0;
            int n=strlen(s);
            for(int i=0;i<n;i++){
                int c=idx(s[i]);
                if(!ch[u][c]){
                    memset(ch[sz],0,sizeof(ch[sz]));
                    val[sz]=0;
                    ch[u][c]=sz++;
                }
                val[u]++;
                u=ch[u][c];
            }
            val[u]++;
        }
        int query(char *s){
            int u=0;
            int n=strlen(s);
            for(int i=0;i<n;i++){
                int c=idx(s[i]);
                if(!ch[u][c])    return 0;
                u=ch[u][c];
            }
            return val[u];
        }
    }tire;
 int main()
 {
     char s[20];
     tire.init();
     while(gets(s)&&s[0]!=0)    tire.insert(s);
     while(scanf("%s",&s)!=EOF)  printf("%d\n",tire.query(s));
    return 0;
 }

 

 

 

HDU-1251 难题统计(Tire模板题,数组模拟写法)

标签:模板   %s   span   col   iostream   color   str   bsp   pre   

原文地址:https://www.cnblogs.com/overrate-wsj/p/12257582.html

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