hdu 2072 单词数(字典树入门题)
来源:互联网 发布:解手机密码软件 编辑:程序博客网 时间:2024/06/05 03:21
http://acm.hdu.edu.cn/showproblem.php?pid=2072
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
解题思路:这个题用map就可以很容易的解决了,由于最近在练字典树,就用它来写了一下,至于要在插入时记录一下是不是新出现的单词,如果是ans++,否则就继续插入下一个就可以了。
#include <bits/stdc++.h>using namespace std;struct Trie{ int is_str; Trie *child[26]; Trie() { is_str = 0; for(int i=0;i<26;i++) child[i] = NULL; }};Trie *root,*current,*temp;int ans = 0;void insert(string str){ current = root; for(int i=0;i<str.length();i++) { if(current->child[str[i]-'a']==NULL){ temp = new Trie; current->child[str[i]-'a'] = temp; current = current->child[str[i]-'a']; } else current = current->child[str[i]-'a']; } if(!current->is_str){ current->is_str = 1; ans++; }}void del(Trie *root){ for(int i=0;i<26;i++) if(root->child[i]!=NULL) del(root->child[i]); delete(root);}int main(){ string str; while(getline(cin,str)) { ans = 0; root = new Trie; if(str.length()==1&&str[0]=='#') break; stringstream ss(str); string s; while(ss>>s) { insert(s); } printf("%d\n",ans); } return 0;}
阅读全文
0 0
- hdu 2072 单词数(字典树入门题)
- hdu-2072-单词数(字典树)
- hdu 2072 单词数(字典树)
- hdu 2072 单词数 字典树
- HDU 2072 单词数 字典树
- hdu 2072 单词数 字典树
- hdu 2072-单词数(字典树)
- hdu 题目2072 单词数 (字典树)
- hdu2072 单词数(字典树)
- hdu 2072 单词数(Trie树)
- hdu 2846 【字典树】单词子串的匹配数
- 单词数(hdu2072字典树)
- 单词数 (HDU_2072) 字典树
- HDU 2072 单词数
- hdu 2072 单词数
- hdu 2072 单词数
- HDU 2072 单词数
- HDU 2072 单词数
- Java mail发送邮件
- 安装hhvm服务器时遇到的一些问题
- Android面试题收集(Activity相关)
- Java框架原理之注解
- theano环境配置
- hdu 2072 单词数(字典树入门题)
- pat 1040. 有几个PAT
- 实现分页并提取出来作为模板使用
- 修改无线wifi网络名称。注册表。windows 无线属性 windows 无线 配置文件
- Table_map_log_event column types: numerical identifier and metadata
- Terrible Sets
- 狼 羊 渔夫过河问题
- 基于对抗生成网络的图像转换技术【论文笔记】
- Java性能调优工程的几点建议《转载》