`

HDU-1251-统计难题

 
阅读更多
trie树的最基本题型,题目是要统计在一个字典中,有多少匹配指定前缀的单词,因为trie树是一棵前缀树,所以对于trie树的每个节点在插入时只要经过这个节点便对这个计数变量加一,最后按照trie查询进行统计;返回统计量即可。


#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
struct node
{
    int num;
    bool f;
    int next[26];
    void init(){num=0;f=0;memset(next,-1,sizeof(next));};
}trie[1000000];
int p;
char input[100];
void root()
{
    trie[p=0].init();
}
void insert(char* a)
{
    int index=0;
    int len=strlen(a);
    int cur;
    for(int i=0;i<len;i++)
    {
        cur=a[i]-'a';
        if(trie[index].next[cur]==-1)
        {
            trie[++p].init();
            trie[index].next[cur]=p;
        }
        trie[index].num++;
        index=trie[index].next[cur];
    }
    trie[index].f=1;
    trie[index].num++;
}
int find(char* a)
{
    int index=0;
    int len=strlen(a);
    int cur;
    for(int i=0;i<len;i++)
    {
        cur=a[i]-'a';
        if(trie[index].next[cur]==-1)return 0;
        index=trie[index].next[cur];
    }
    return trie[index].num;
}
int main()
{
    char input[100];
    int word;
    int query;
    root();
    int i;
    while(1)
    {
        cin.getline(input,20);
        //scanf("%s",input);
        if(strlen(input)==0)    break;
        insert(input);
    }
    while(scanf("%s",input)!=EOF)
    {
        //scanf("%s",input);
        cout<<find(input)<<endl;
    }
    return 0;
}
0
2
分享到:
评论

相关推荐

    hdu-acm源代码(上百道源代码)

    HDU-ACM源代码是针对国际大学生程序设计竞赛(ICPC,International Collegiate Programming Contest)中的题目,由参赛者或爱好者编写的解决方案集合。这个压缩包包含上百个源代码,涉及了各种算法和编程技巧,是...

    HDU-EID-V2-核心板1

    在本话题中,我们关注的是一个名为"HDU-EID-V2-核心板1"的特定设计,它涉及到STM32的核心组件、接口、电源管理和调试配置。 首先,核心板设计中提到了F103和F207两个型号的STM32芯片。F103和F207属于STM32的不同...

    hdu-OS-simple-shell,Linux_的_Shell_命令窗口_demo_版实现_shell-demo.zip

    hdu-OS-simple-shell,Linux_的_Shell_命令窗口_demo_版实现_shell-demo

    算法-数塔(HDU-2084).rar

    标题中的“算法-数塔(HDU-2084)”是指一个编程竞赛题目,源自杭州电子科技大学(HDU)的在线编程平台。在这个问题中,参赛者被要求解决一个名为“数塔”的算法挑战。数塔问题通常涉及到递归、深度优先搜索(DFS)...

    期末复习自行整理资料分享_HDU-fuxiziyong.zip

    期末复习自行整理资料分享_HDU-fuxiziyong

    2019-hdu-multi-(2019杭电多校第二场数据与标程).zip

    《2019-hdu-multi-(2019杭电多校第二场数据与标程).zip》是一个专门针对编程竞赛爱好者和ACM(国际大学生程序设计竞赛)参赛者的资源包。这个压缩文件的核心内容是2019年杭州电子科技大学(HDU)主办的多校联合...

    HDU-2000-2099.rar_hdu

    这个名为"HDU-2000-2099.rar_hdu"的压缩包包含了该平台从2000到2099共100道题目的源代码。这些题目涵盖了初级到高级的各种算法,对于学习和提升编程技能非常有帮助。 首先,我们来看看这些题目可能涉及到的基础知识...

    HDU-2000-2099.zip_hdu2000

    【标题】"HDU-2000-2099.zip_hdu2000" 是一个包含杭电(Hangzhou Dianzi University)ACM竞赛题目解题报告的压缩包,覆盖了编号从2000到2099的题目。这个资源对于学习算法、提高编程技巧以及准备ACM/ICPC(国际大学...

    算法-免费馅饼(HDU-1176)(包含源程序).rar

    算法-免费馅饼(HDU-1176)(包含源程序).rar

    hdu1250高精度加法

    ### hdu1250高精度加法 #### 背景介绍 在计算机科学与编程竞赛中,处理大整数运算(特别是加法、减法、乘法等)是常见的需求之一。当数字的位数超过了标准数据类型(如`int`、`long`等)所能表示的最大值时,就需要...

    算法-排列组合(HDU-1521)(包含源程序).rar

    标题中的“算法-排列组合(HDU-1521)”显然指的是一道编程竞赛题目,源自HDU(杭州电子科技大学)的在线编程平台。这类问题通常要求参赛者编写程序来解决数学或计算机科学中的排列组合问题。排列组合是离散数学中的...

    zyq2652192993zyq#Advance-Algorithm#HDU-1711 Number Sequence(KMP算

    HDU-1711 Number Sequence(KMP算法)For each test case, you should output one line wh

Global site tag (gtag.js) - Google Analytics