`

统计难题 字典树

 
阅读更多

 

统计难题

Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 2947 Accepted Submission(s): 1038


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

 

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

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

 

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

 

Sample Input
banana
band
bee
absolute
acm

ba
b
band
abc
 

 

Sample Output

 

2
3
1
0
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Tree
{
	int n;
	Tree *p[26];
}head;
void chushihua(Tree &a)
{
	int i;
	a.n=1;
	for(i=0;i<26;i++)
		a.p[i]=NULL;
}
void addtree(char a[])
{
	int i;
	int n;
	Tree *term=&head;
	n=strlen(a);
	for(i=0;i<n;i++)
	{
		if(term->p[a[i]-'a']==NULL)
		{
			term->p[a[i]-'a']=(Tree*)malloc(sizeof(Tree));
			term=term->p[a[i]-'a'];
			chushihua(*term);
		}
		else
		{
			term=term->p[a[i]-'a'];
			(term->n)++;
		}
	}
}
int findtree(char a[])
{
	int i;
	int n;
	Tree *term=&head;
	n=strlen(a);
	for(i=0;i<n;i++)
	{
		if(term->p[a[i]-'a']==NULL)return(0);
		term=term->p[a[i]-'a'];
	}
	return(term->n);
}
int main()
{
	//freopen("in.txt","r",stdin);
	char str[12];
	chushihua(head);
	while(1)
	{
		gets(str);
		if(str[0]==0)break;
		addtree(str);
	}
	while(gets(str))
	{
		printf("%d\n",findtree(str));
	}
	return(0);
}

 

 

 

 

分享到:
评论

相关推荐

    字典树查找统计及单词

    在这个场景中,标题“字典树查找统计及单词”指的是利用字典树进行单词查找、统计以及可能的分析操作。描述中的“将一些大型的英文文件建立一个结构来实现查找与分析”进一步明确了我们是通过字典树处理大量文本数据...

    输入法模拟程序(字典树词频统计)

    《输入法模拟程序:字典树与词频统计的智慧结晶》 在信息技术飞速发展的今天,输入法作为人机交互的重要桥梁,其智能化程度直接影响到用户的使用体验。本项目“输入法模拟程序”旨在利用数据结构和算法的力量,创建...

    字典树及其应用 功能介绍及实现

    例如,在搜索引擎系统中,字典树可以用来统计文本词频、排序和保存大量的字符串。在信息检索领域,字典树可以用来实现快速检索和查询。同时,字典树也可以用来解决many-to-many关系的问题,例如,在社交媒体平台中,...

    快速单词拼写检错程序(字典树实现)

    快速单词拼写检错程序基于字典树的实现是一个高效的方法来检查文本中的拼写错误。这个Java程序利用了数据结构——字典树(Trie),也被称为前缀树或PAT树,它在处理字符串相关的搜索问题时表现出色。下面我们将深入...

    字典树~java语言

    在IT领域,字典树(Trie,也称为前缀树或字首树)是一种用于存储动态集合或关联数组的数据结构。它以高效的方式处理字符串查询,尤其适用于查找具有共同前缀的单词。字典树的主要优点是它可以快速地通过共享前缀来...

    acm 算法 字典树模板

    ACM 算法字典树模板 在算法竞赛中,字典树(Trie)是一种常用的数据结构,用于解决字符串匹配问题。下面是字典树的基本概念和实现细节。 字典树的基本概念 字典树是一种树形数据结构,用于存储字符串集合。它的每...

    深度优先遍历字典树(统计单词出现的个数)

    在字典树(Trie,也称为前缀树或数字检索树)中应用深度优先遍历,可以有效地统计单词出现的个数。字典树是一种数据结构,常用于存储大量字符串,它允许我们快速查找以特定前缀开头的所有单词。 在Java中,实现字典...

    字典树算法 c语言实现

    字典树,也被称为Trie或前缀树,是一种用于高效存储和检索字符串的数据结构。在C语言中实现字典树,主要涉及到链表、指针操作和动态内存分配等核心概念。以下是对字典树算法及其C语言实现的详细说明: ### 1. 字典...

    字典树的模版(模版)

    ### 字典树模版详解 在计算机科学领域,字典树(Trie Tree),也被称为前缀树或关键字树,是一种用于存储字符串集合的高效数据结构。与传统的搜索树相比,字典树能够通过共享公共前缀来节省空间,特别适用于处理...

    字典树_字典树_

    在实际应用中,字典树可以用于各种场景,如搜索引擎的关键词匹配、文本分析中的词频统计、网络协议解析等。了解并熟练掌握字典树的原理和实现,能够提高程序的效率和功能。通过阅读和理解提供的"字典树"代码,你可以...

    字典树php实现

    `TrieTree` 类是字典树的核心类,负责构建整个字典树结构,并提供插入、搜索等基本操作。 - **属性** - `$root`: 字典树的根节点。 - **构造函数** - 初始化 `$root` 为一个新的 `TrieNode` 实例,设置其 `$flag...

    ACM Trie树 模板 字典树

    ACM Trie树 模板,字典树模板,数据结构

    字典树的实现

    字典树的实现

    字典树KMP优先队列

    在IT领域,字典树(Trie)是一种高效的数据结构,用于存储字符串集合。它能够快速地进行前缀查找、插入和删除操作。字典树的每个节点代表一个字符串的前缀,根节点代表空字符串,每个节点的子节点对应一个字符,节点...

    Java实现字典树TrieTree

    在计算机科学中,字典树(也称为前缀树或TrieTree)是一种高效的数据结构,主要用于存储字符串集合。它能够快速地进行关键词查找、插入和删除操作,尤其适合于处理大量的词汇数据,如在四六级英语考试的高频词汇查询...

    可变长数组和字典树

    在编程领域,可变长数组(也称为动态数组)和字典树(又称Trie树或前缀树)是两种非常重要的数据结构。它们在不同的场景下有着广泛的应用,尤其在处理大量数据时能展现出高效的性能。 首先,我们来详细讨论可变长...

    集美大学数据结构课程设计 字典树.zip

    集美大学数据结构课程设计 字典树 集美大学数据结构课程设计 字典树 集美大学数据结构课程设计 字典树 集美大学数据结构课程设计 字典树 集美大学数据结构课程设计 字典树 集美大学数据结构课程设计 字典树 集美大学...

    字典树_英汉词典

    ### 字典树(Trie Tree)相关知识点 #### 一、什么是字典树? 字典树,也称为前缀树或Trie树,是一种用于存储字符串的高效数据结构。它利用了字符串之间的公共前缀来减少存储空间的需求,并且能够快速进行插入、...

    字典树实例--java实现

    在IT领域,字典树(Trie,也称为前缀树或字典树)是一种用于存储动态集合或关联数组的数据结构。它允许我们快速查找、插入和删除字符串,特别是对于有公共前缀的字符串,效率非常高。这个实例是用Java语言实现的,...

    C语言字典树创建和搜索示例

    在计算机科学中,字典树(也称为Trie或前缀树)是一种高效的数据结构,尤其适用于快速查找和插入字符串。在C语言中实现字典树可以帮助我们构建一个高效的字符串处理程序,例如搜索引擎或者自动补全功能。在这个示例...

Global site tag (gtag.js) - Google Analytics