POJ-3630(静态trie树,动态分配空间会TLE)(Phone List)
来源:互联网 发布:端口号的目的是什么 编辑:程序博客网 时间:2024/06/06 00:05
自己写了个动态的trie被tle了,悲剧
此题还能够先排序,然后用strncmp就可以判断字符串是否被后面的包含。
代码如下:
bool cmp(char *x,char *y){return strcmp(x,y)<0;}int main(){int cases,number,x,i,j,flag;char **d=new char*[10000];for(i=0;i<10000;++i)d[i]=new char[10];scanf("%d",&cases);while(cases--){scanf("%d",&number);for(i=0;i<number;++i)scanf("%s",d[i]);sort(d,d+number,cmp);flag=0;for(i=0;i<number;++i)if(strncmp(d[i],d[i+1],strlen(d[i])<strlen(d[i+1])?strlen(d[i]):strlen(d[i+1]))==0){flag=1;break;}if(flag==0)printf("YES\n");elseprintf("NO\n");}return 0;}
trie代码如下:
/*==========================================================*\| 静态trie\*==========================================================*/struct my{int x, y;//x记录tree的下标,y记录出现的次数};struct trie{my next[15];int cnt;} tree[100000];struct phone{char s[15];} p[10005];bool cmp(phone a, phone b){return strlen(a.s) > strlen(b.s);}int Index;void make_tree(char s[]){int i, l = strlen(s);int now = 0;for (i = 0; i < l; ++i) {int v = s[i] - '0';if (tree[now].next[v].x == 0) {tree[now].next[v].x = ++Index;tree[now].next[v].y = 1;now = Index;} else {tree[now].next[v].y++;now = tree[now].next[v].x;}}}bool search(char s[]){int i, l = strlen(s);int now = 0;for (i = 0; i < l; ++i) {int v = s[i] - '0';if (tree[now].next[v].y == 1) {return false;} else {now = tree[now].next[v].x;}}return true;}int main(){int t;scanf("%d", &t);while (t--) {int n;scanf("%d", &n);int i, j;Index = 0;memset(tree, 0, sizeof(tree));for (i = 0; i < n; ++i) {scanf("%s", p[i].s);make_tree(p[i].s);}for (i = 0; i < n; ++i) {if (search(p[i].s) == true) {printf("NO\n");break;}}if (i == n)printf("YES\n");}return 0;}
- POJ-3630(静态trie树,动态分配空间会TLE)(Phone List)
- POJ 3630 - Phone List (Trie树)
- POJ -- 3630 Phone List(Trie 树)
- poj 3630 Phone List(依旧Trie~)
- POJ 3630 - Phone List (Trie)
- POJ 3630 Phone List(Trie)
- POJ 3630 Phone List(Trie树,静态数组实现)
- hdu 1671 Phone List && POJ 3630 Phone List(静态申请空间)
- POJ 3630 Phone List 【Trie树入门】
- [poj 3630] Phone List trie 树
- Phone List(trie树)
- poj 3630 Phone List (trie~)
- poj 3630 Phone List trie
- poj 3630 Phone List(Trie)
- POJ 3630 Phone List // Trie
- poj 3630 Phone List (字典树 +静态字典树)
- 【POJ】3630 - Phone List(字典树(静态建树))
- POJ 3630 && HDU 1671 Phone list(静态字典树)
- Java引用对象SoftReference WeakReference PhantomReference
- 使用std:min(),std:max()
- 第六周上机任务2
- Android开发必备的21个免费资源和工具
- LINUX设备驱动之输入子系统(一)
- POJ-3630(静态trie树,动态分配空间会TLE)(Phone List)
- ·LINUX设备驱动之serio总线(二)
- Android学习笔记Android必备开发工具之一命令行创建Git库(Dean)
- LINUX设备驱动之serio总线(一)
- 关于java.net.URLConnection
- 中国BIM意识和实践在世界BIM大潮中没有落伍,令人欣慰
- IM设计思考:点对点消息交换
- LINUX设备驱动之platform总线
- CStringList不完全用法