字典树练习(一)hihocoder 1014(求相同前缀的数目)
2015-04-29 10:47
495 查看
题目链接:
http://hihocoder.com/problemset/problem/1014
题意:
给定n个单词,然后我们构成一个字典树,然后再给你m个串,求有多少个单词是以这个串为前缀的。
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 100010;
const int max_size = 30;
int id(char c){
return c-'a';
}
struct Trie{
Trie *ch[max_size];
int num;
Trie(){
num = 0;
for(int i=0;i<max_size;i++)
ch[i]=NULL;
}
}*root;
void insert_str(char *s){
Trie *p = root;
p->num++;
for(int i=0; p&&s[i] ; i++){
int u = id(s[i]);
if(p->ch[u]==NULL)
p->ch[u] = new Trie;
p=p->ch[u];
p->num++;
}
}
int find_str(char *s){
Trie *p = root;
for(int i=0;p&&s[i];i++){
int u = id(s[i]);
if(p->ch[u]==NULL) return 0;
p=p->ch[u];
}
return p->num;
}
int main()
{
char s[12];
int n, m;
while(~scanf("%d", &n))
{
root = new Trie;
while(n--){
scanf("%s", s);
insert_str(s);
}
scanf("%d", &m);
while(m--){
scanf("%s", s);
printf("%d\n", find_str(s));
}
}
return 0;
}
http://hihocoder.com/problemset/problem/1014
题意:
给定n个单词,然后我们构成一个字典树,然后再给你m个串,求有多少个单词是以这个串为前缀的。
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 100010;
const int max_size = 30;
int id(char c){
return c-'a';
}
struct Trie{
Trie *ch[max_size];
int num;
Trie(){
num = 0;
for(int i=0;i<max_size;i++)
ch[i]=NULL;
}
}*root;
void insert_str(char *s){
Trie *p = root;
p->num++;
for(int i=0; p&&s[i] ; i++){
int u = id(s[i]);
if(p->ch[u]==NULL)
p->ch[u] = new Trie;
p=p->ch[u];
p->num++;
}
}
int find_str(char *s){
Trie *p = root;
for(int i=0;p&&s[i];i++){
int u = id(s[i]);
if(p->ch[u]==NULL) return 0;
p=p->ch[u];
}
return p->num;
}
int main()
{
char s[12];
int n, m;
while(~scanf("%d", &n))
{
root = new Trie;
while(n--){
scanf("%s", s);
insert_str(s);
}
scanf("%d", &m);
while(m--){
scanf("%s", s);
printf("%d\n", find_str(s));
}
}
return 0;
}
相关文章推荐
- hihoCoder 1014 Trie树(字典树)
- hihoCoder 1014 Trie树(基础字典树)
- hihoCoder 1014 Trie树(字典树)
- hihocoder1014(字典树)
- c++字典树 Trie树(hihocoder1014)
- Hihocoder 1014Trie树(字典树模板)
- 【Tire 求字典出现的前缀个数】hihocoder 1014 Trie树
- hihoCoder 1014 : Trie树(字典树)
- hihoCoder 1014 : Trie树(字典树)
- hdu1671Phone List(字典树---判断有无相同的前缀单词)
- hihocoder 1014 Trie树 字典树
- hihoCoder 1014trie树(字典树)
- hihocoder 1014 Trie树 字典树模版题
- hihoCoder - 1014 : Trie树 - (字典树)
- HihoCoder1656 : 前缀后缀查询([Offer收割]编程练习赛39)(字典树+小技巧)
- hihoCoder-1014-Trie树(字典树)
- hihoCoder 1014 Trie树(字典树入门)
- hihoCoder 1014 Trie树 字典树模板
- hihoCoder - 1014 - Trie树 (简单字典树!!)
- hihoCoder 1261 String Problem II 【字典树 + DFS】