`

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
分享到:
评论

相关推荐

    基于杭电校园生活的Chrome插件HDU-GO设计源码

    为了满足学校师生对于校园生活便捷服务的需求,开发者们专门为杭电校园生活打造了一款Chrome浏览器插件——HDU-GO。该插件不仅能够帮助学生更快捷地访问校园信息资源,还集成了诸如课程表查看、图书馆资源搜索、校园...

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

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

    hi3861-hdu-iot-application.zip

    标题中的“hi3861-hdu-iot-application.zip”指代的是一个压缩包文件,它包含了针对Hi3861平台的开发套件,这是一个专为物联网应用设计的开发环境。Hi3861是华为推出的一款面向物联网领域的芯片,它集成了Wi-Fi、...

    HDU-EID-V2-核心板1

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

    算法-数塔(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.zip_hdu2000

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

    HDU-2000-2099.rar_hdu

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

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

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

    个人数据库原理课程设计的期末作业留档_HDU-suspermarket_sys.zip

    个人数据库原理课程设计的期末作业留档_HDU-suspermarket_sys.zip文档是关于数据库原理的教学实践成果,主要面向高校计算机科学与技术专业的学生。这份作业不仅包括了数据库理论知识的运用,还融入了实际操作环节,...

    hdu1250高精度加法

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

Global site tag (gtag.js) - Google Analytics