ZZULI_TEAM_PRACTICE(1)nbsp;nbsp;HDUnbsp;1251…

2023-10-20 03:48

本文主要是介绍ZZULI_TEAM_PRACTICE(1)nbsp;nbsp;HDUnbsp;1251…,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

统计难题 p
Time Limit: 2000MSMemory Limit: 65535KB64bit IO Format: %I64d & %I64u

[Submit]   [Go Back]   [Status]

Description

Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).

Input

输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.

注意:本题只有一组测试数据,处理到文件结束.

Output

对于每个提问,给出以该字符串为前缀的单词的数量.

Sample Input

banana 
band 
bee 
absolute 
acm 

ba 
band 
abc

Sample Output

0
题意很简单,字典树,基本都过了
代码:(不是我做的,队长做的)
C语言临时自用代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef  struct  node
{
        struct  node  * num [ 26 ];
        int  n;
} lnode , * link;
link  root;
link  create()
{
        link  c;
        int  i;
        c =( link) malloc( sizeof( lnode));
        for( i = 0; i < 26; i ++)
                c -> num [ i ] = NULL;
        c ->n = 0;
        return  c;
}
void  build( char  a [])
{
        int  i , j;
        link  cur , next;
        j = strlen( a);
        cur = root;
        for( i = 0; i < j; i ++)
        {
                if( cur -> num [ a [ i ] - 'a' ] != NULL)
                        cur = cur -> num [ a [ i ] - 'a' ];
                else
                {
                        next = create();
                        cur -> num [ a [ i ] - 'a' ] = next;
                        cur = next;
                }
                        cur ->n ++;
        }
}
int  look( char  a [])
{
        int  i , j;
        link  cur;
        cur = root;
        j = strlen( a);
        i = 0;
for( i = 0; i < j; i ++)
        if( cur -> num [ a [ i ] - 'a' ] == NULL)
                return  0;
        else
                cur = cur -> num [ a [ i ] - 'a' ];
        return  cur ->n;
}
int  main()
{
        char  a [ 20 ];
        int  sum;
        root = create();
        while( gets( a ), strcmp( a , ""))
                build( a);
        while( gets( a))
        {
                sum = look( a);
                printf( "%d \n " , sum);
        }
        return  0;
}

这篇关于ZZULI_TEAM_PRACTICE(1)nbsp;nbsp;HDUnbsp;1251…的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/244437

相关文章

PAT (Advanced Level) Practice——1011,1012

1011:  链接: 1011 World Cup Betting - PAT (Advanced Level) Practice (pintia.cn) 题意及解题思路: 简单来说就是给你3行数字,每一行都是按照W,T,L的顺序给出相应的赔率。我们需要找到每一行的W,T,L当中最大的一个数,累乘的结果再乘以0.65,按照例子写出表达式即可。 同时还需要记录每一次选择的是W,T还是L

CodeForces 490A Team Olympiad

题意: 编号为1、2、3的同学分成一组  问  最多形成多少组  并输出方案 思路: 模拟3个栈暴力 代码: #include<cstdio>#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<map>#include<set>#include<vector>#i

Ubuntunbsp;出现apt-get:nbsp;Packag…

学习了 原文地址:Ubuntu 出现apt-get: Package has no installation candidate问题 作者:zhou4539   Ubuntu 出现apt-get: Package has no installation candidate问题 分类: 系统-Linux 2011-12-18 13:32 751人阅读 评论(0) 收藏 举报 今天在

微信公众平台nbsp;10.29日更新nbsp;之己见

曾经有前辈说过,无论微信 5.0 的部分功能做的有多差,但是这是微信转型的一个里程碑。起初,笔者有点不太理解其中的道理,但是随着自己做了些东西东西后,才慢慢发现,这种先推广后优化,让用户去引导功能开发的策略是多么的明智。 此前,网络曾有谣言,微信服务号将于明年起收3000元/年的年费,这一传言尚未被证实,昨天微信公众平台正式推出了微信认证这一个功能,服务号可以花费300元进行认

PAT (Advanced Level) Practice

1001:  题目大意: 计算 a+b 的结果,并以标准格式输出——即每三个数字一组,组之间用逗号分隔(如果数字少于四位,则不需要逗号分隔)  解析: 我们知道相加右正有负,对于样例来说 Sample Input: -1000000 9 Sample Output: -999,991 如果是从左往右,算上负号的话输出应该是-99,999,1 从右往左:-,999,991离正确

Code Practice Journal | Day59-60_Graph09 最短路径(待更)

1. Dijkstra 1.1 原理与步骤 步骤: 选取距离源点最近且未被访问过的节点标记该节点为已访问更新未访问节点到源点的距离 1.2 代码实现 以KamaCoder47题为例 题目:47. 参加科学大会(第六期模拟笔试) (kamacoder.com) class Program{public static void Main(string[] args){//处

C语言的条件编译#if,nbsp;#elif…

原文地址:C语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef 作者:Embeder 有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指

结构体定义nbsp;typedefnbsp;structnbsp;…

很不错 原文地址:结构体定义 typedef struct 用法详解和用法小结 作者:紫心玲儿 typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。 具体区别在于: 若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n; 若用typedef,可以这样写,typedef struct node

C++nbsp;usingnbsp;namespacenbsp;stdnbsp;详解

一 : 和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。  后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。  因此,当使用时,相当于在c中调用库函数,使用

C++的dllexport和dllimportnbsp;nbsp;…

C++的dllexport和dllimport: __declspec(dllexport) 声明一个导出函数,是说这个函数要从本DLL导出。我要给别人用。一般用于dll中省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类 __declspec(dllimport)