hdu 1247 Hat’s Words trie
2015-10-04 21:09
351 查看
[code]#include<bits/stdc++.h> using namespace std; struct trie { int cnt; trie *next[26]; }; trie *rt=new trie; char a[50000+5][20]; void settrie(char *s) { trie *p=rt,*t; int n=strlen(s),i,c; for(i=0;i<n;i++) { c=s[i]-'a'; if(p->next[c]==NULL) { t=new trie; for(int j=0;j<26;j++) { t->next[j]=NULL; t->cnt=0; } p->next[c]=t; } p=p->next[c]; } p->cnt=1; } int check(char *s,int st,int len) { int i,j,c; trie *p=rt; for(i=0;i<st;i++) { c=s[i]-'a'; if(p->next[c]==NULL) break; p=p->next[c]; } if(i!=st||p->cnt==0) return 0; p=rt; for(;i<len;i++) { c=s[i]-'a'; if(p->next[c]==NULL) break; p=p->next[c]; } if(i!=len||p->cnt==0) return 0; return 1; } int main() { int n,i,j,len,flag; for(i=0;i<26;i++) { rt->next[i]=NULL; rt->cnt=0; } n=0; while(gets(a )) { if(strcmp(a ,"")==0) break; settrie(a ); n++; } for(i=0;i<n;i++) { len=strlen(a[i]); flag=0; if(len==1) continue; for(j=1;j<len;j++) { if(check(a[i],j,len)==1) { flag=1; break; } } if(flag) printf("%s\n",a[i]); } return 0; }
相关文章推荐
- [置顶] 《你若安好,便是晴天》
- 关于多网卡时socket bind失效的问题
- Matlab-vision包学习-Feature Detection,Extraction and Matching-Harris角点检测
- 面向对象及组件开发---笔记1
- [置顶] 【动态规划】最长递增子序列
- UML视频1-15集总结
- [BNU弱校联萌]如日中天
- Catalan数(转载百度百科,文章结构及内容部分改动,转载必须说明出处)
- linux网络属性配置
- SEnginx安全相关模块配置
- Redis: 为行情数据库设计键值
- hadoop 自学指南十之Pig
- 笔试、面试重点总结:算法基础、数据结构
- Creating Testable Software
- 10.1训练赛--北京14现场赛--HDU5119
- strom 官方DRPC
- JSP内置对象
- C#学习日记10----番外篇 C语言进制转换
- 【NodeJs】NodeJs中使用highstock
- Java误区: 静态代码块,当把类将被载入到自己主动运行?