hihoCoder 1014trie树(字典树)
题目提示已经很清楚了~
贴代码……
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int MAXN = 100000 + 10; const int alNum = 26; struct Node{ int cnt; int next[alNum]; void init(){ memset(next,-1,sizeof(next)); cnt = 0; return; } }; Node trie[MAXN]; int tt; void build_trie(char str[]){ int len = strlen(str); int p = 0; for(int i = 0;i < len;i++){ int ch = str[i] - 'a'; if(trie[p]hdu1671 Phone List.next[ch] == -1){ trie[tt].init(); trie[p].next[ch] = tt++; } p = trie[p].next[ch]; trie[p].cnt++; } } int quercy(char str[]){ int len = strlen(str); int p = 0; for(int i = 0;i < len;i++){ int ch = str[i] - 'a'; if(trie[p].next[ch] == -1){ return 0; } p = trie[p].next[ch]; } return trie[p].cnt; } int main(){ // freopen("input.txt","r",stdin); int n,m; while(~scanf("%d",&n)){ char str[20]; tt = 0; trie[tt++].init(); for(int i = 0;i < n;i++){ scanf("%s",str); build_trie(str); } scanf("%d",&m); for(int i = 0;i < m;i++){ scanf("%s",str); int q = quercy(str); printf("%d\n",q); } } return 0; }
字典树 水题
判断一个是否为另一个的前缀。
注意 9113
911 的情况……
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int MAXN = 10000000 + 10; const int NextNum = 10; int tt; struct Node{ int next[NextNum]; bool flag; void init(){ memset(next,-1,sizeof(next)); flag = 0; } }; Node trie[MAXN]; bool build_trie(char str[]){ int p = 0; int len = strlen(str); for(int i = 0;i < len;i++){ int x = str[i] - '0'; if(trie[p].next[x] == -1){ trie[tt].init(); trie[p].next[x] = tt++; } p = trie[p].next[x]; if(trie[p].flag){ return 0; } } for(int i = 0;i < NextNum;i++){ if(trie[p].next[i] != -1){ return 0; } } trie[p].flag = 1; return 1; } int main(){ // freopen("input.txt","r",stdin); int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); tt = 0; trie[tt++].init(); bool ok = 1; char str[40+10]; for(int i = 0;i < n;i++){ scanf("%s",str); if(!ok){ continue; } ok = build_trie(str); } printf("%s\n",ok?"YES":"NO"); } return 0; }
- CUDA学习笔记一
- hbase 增删改查 api 简单操作
- POJ 1459 Power Network
- ny 1002括号配对问题
- URAL 1016 Cube on the Walk 搜索题
- 旅行记录
- 省市区字典数组
- Hadoop解析--MapReduce
- 助手系列之python的FTP服务器
- 旋转的风车(声音越大转速越快)
- 【位运算生成枚举序列】
- Android 折线图的实现
- OpenCV中图像及子图像ROI之间的复制
- virtual empty() const中的const有的作用
- 新生儿是否应饿着
- NSRunloop的解析及autorelease的释放时机
- iOS反射机制
- bzoj1002【fjoi2007】轮状病毒
- !HDU 4282 A very hard mathematic problem-卡时间-(二分枚举)
- zoj 3890 Wumpus bfs