题目链接: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

题解:

简单的方法可以直接用set容器。

当然也可以用字典树来做。

小坑的地方是有如下数据:

(直接输入引号内的内容)
1.
" "
0 2.
" asdf as a"
3 3.
" asdf asdf ds"
2 4.
"asdf asdf "
1 5.
直接输回车
0

AC代码(set):

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+;
char str[maxn],s[];
set<string> S;
int main()
{
while()
{
gets(str);
if(str[]=='#') break; S.clear();
int len=strlen(str);
for(int i=,tot=;i<len;i++)
{
if(isalpha(str[i]))
{
s[tot++]=str[i];
if(i+==len || str[i+]==' ')
{
s[tot]='\0';
S.insert(s);
}
}
else tot=;
}
cout<<S.size()<<endl;
}
}

AC代码(字典树):

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+; namespace Trie
{
const int SIZE=maxn*;
int sz;
struct TrieNode
{
bool ed;
int nxt[];
}trie[SIZE];
void init()
{
sz=;
memset(trie,,sizeof(trie));
}
int insert(const string& s)
{
int p=;
for(int i=;i<s.size();i++)
{
int ch=s[i]-'a';
if(trie[p].nxt[ch]==) trie[p].nxt[ch]=++sz;
p=trie[p].nxt[ch];
}
if(trie[p].ed) return ;
else return trie[p].ed=;
}
}; char str[maxn],s[];
int main()
{
while()
{
gets(str);
if(str[]=='#') break; int ans=;
Trie::init();
int len=strlen(str);
for(int i=,tot=;i<len;i++)
{
if(isalpha(str[i]))
{
s[tot++]=str[i];
if(i+==len || str[i+]==' ')
{
s[tot]='\0';
ans+=Trie::insert(s);
}
}
else tot=;
}
cout<<ans<<endl;
}
}

HDU 2072 - 单词数 - [(有点小坑的)字典树模板题]的更多相关文章

  1. HDU 1251 统计难题(字典树模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1251 题意:给出一些单词,然后有多次询问,每次输出以该单词为前缀的单词的数量. 思路: 字典树入门题. #inc ...

  2. HDU - 1251 字典树模板题

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

  3. hdu 2072 单词数(字符串)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 题意 每行输入由小写字母和空格组成,统计每行中不同的单词数. 题解 题解一 比较简洁的解法,读入 ...

  4. HDU 2072 单词数 详细解答

    题目 单词数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  5. hdu 1251 字典树模板题 ---多串 查找单词出现次数

    这道题题目里没有给定数据范围 我开了2005  疯狂的WA 然后开了50000, A掉  我以为自己模板理解错  然后一天没吃饭,饿得胃疼还是想着把这题A掉再去吃,谁知竟然是这样的问题,,,呵呵~~~ ...

  6. 字典树模板题(统计难题 HDU - 1251)

    https://vjudge.net/problem/HDU-1251 标准的字典树模板题: 也注意一下输入方法: #include<iostream> #include<cstdi ...

  7. HDU 1251 Trie树模板题

    1.HDU 1251 统计难题  Trie树模板题,或者map 2.总结:用C++过了,G++就爆内存.. 题意:查找给定前缀的单词数量. #include<iostream> #incl ...

  8. HDU 1251 统计难题 (Trie树模板题)

    题目链接:点击打开链接 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单 ...

  9. 字典树模板 HDU - 1251

    题意: 给一些单词,换行键后,查找以后输入的单词作为前缀的话们在之前出现过几次. 思路: 字典树模板----像查字典的顺序一样 #include<string> #include<s ...

随机推荐

  1. Emacs 设置C++代码风格

    ;; C++代码风格设置 (defconst cobbcpp '("linux" ; this is inheritance from the linux style (c-bas ...

  2. nodeJs--模块module.exports与实例化方法

    在nodejs中,提供了exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象.而在e ...

  3. rinetd 一个linux下的端口转发工具

    inux下使用iptables实现端口转发,配置较为复杂,使用rinetd工具可以实现快速配置和修改端口转发. 例:本机ip:1.1.1.1 需要实现访问本机的8080端口,自动转发到2.2.2.2 ...

  4. CINATRA发布第一个版本

    cinatra是什么? cinatra是C++开源社区–purecpp发起的一个开源项目,现在正式发布第一个版本cinatra0.9.0,cinatra是一个现代C++写的web framework, ...

  5. Go Revel - app.conf

    ##概览 `app.conf`为应用程序的配置文件,它使用`goconfig`的语法,与windows的ini文件类似. 示例: app.name=chat app.secret=pJLzyoiDe1 ...

  6. github管理开发代码流程

    首先.通过github网站新建一个仓库,得到仓库地址 https://github.com/piercalex/a.git 接着回到客户端,打开git shell: //在客户端配置账户信息 git ...

  7. ubuntu GCC 版本切换

    (1)  查看gcc以及g++的版本 gcc  -v g++ -v star@ai:~ $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_L ...

  8. python一天一题(3)

    #--coding=utf8-- from selenium import webdriver import time import logging import os.path ''' 搜索取搜索的 ...

  9. 解决Django-1.8.2应用部署到Apache后无法显示admin应用的CSS

    在将Django-1.8.2应用部署到Apache后,无法显示admin应用的静态内容,而在“manage.py runserver”命令下可以正常显示,主要是Apache没有找到Django静态内容 ...

  10. Oracle DBA神器之Toad

    很早就听说Toad功能很强大,一直没有使用过,因为PLSQL Developer就很好用.前几天看见同事优化Oracle就是用的Toad,有一些很强大的管理功能,于是再一次对Toad产生兴趣,收集了一 ...