• HDU


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


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

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

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

    Sample Input
    banana
    band
    bee
    absolute
    acm
    
    ba
    b
    band
    abc
    Sample Output
    2
    3
    1
    0

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    
    using namespace std;
    
    typedef struct Node* node;
    
    char s[15];
    char j[15];
    
    struct Node
    {
    	int Num;
    	node Next[26];
    	Node()
    	{
    		Num = 0;
    		memset(Next,NULL,sizeof(Next));
    	}
    };
    
    
    
    void Insert(node root)
    {
    	node p = root;
    	int len = strlen(s);
    	for(int i=0 ; i<len ; i++)
    	{
    		int mid = s[i] - 'a';
    		if(p->Next[mid] == NULL)p->Next[mid] = new struct Node();
    		p = p->Next[mid];
    		p->Num++;
    	}
    }
    
    int Judge(node root)
    {
    	int len = strlen(j);
    	node p = root;
    	for(int i=0 ; i<len ; i++)
    	{
    		int mid = j[i] - 'a';
    		if(p->Next[mid])p = p->Next[mid];
    		else return 0;
    	}
    	return p->Num;
    }
    
    int main()
    {
    	node root = new struct Node();
    	while(gets(s) && strcmp(s,""))
    	{
    		Insert(root);
    	}
    	while(scanf("%s",j)!=EOF)
    	{
    		printf("%d
    ",Judge(root));
    	}
    	return 0;
    }

  • 相关阅读:
    英飞凌TLE9461V33 SBC芯片
    Lin总线诊断级别定义 CLASS I 、II 、III
    AUTOSAR_SWS_CANInterface 阅读
    AUTOSAR_SWS_CANTransceiverDriver 阅读
    VS2013 快捷键
    Can总线空闲状态时候,TX,RX电平
    postman
    题目2
    Robot Framework 自动化测试
    银行测试 http://blog.csdn.net/stillming/article/details/42275251
  • 原文地址:https://www.cnblogs.com/vocaloid01/p/9514069.html
Copyright © 2020-2023  润新知