hdu-1247
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu-1247相关的知识,希望对你有一定的参考价值。
思路:
字典树模板题
#include <iostream> #include <cstring> #include <cstdio> #define MAX 500007 using namespace std; struct node { int e; struct node* next[26]; }; node* root; char str[MAX][50]; void Insert(char* s) { node* ptr = root; for(;*s != ‘\0‘;s++) { int n = *s-‘a‘; if(ptr->next[n] == NULL) ptr->next[n] = new node(); ptr = ptr->next[n]; } ptr->e = 1; } bool find2(char* s) { node* ptr = root; for(;*s != ‘\0‘;s++) { int n = *s-‘a‘; ptr = ptr->next[n]; if(ptr != NULL) { if(ptr->e==1 && *(s+1)==‘\0‘) return true; } else return false; } return false; } bool find1(char* s) { node* ptr = root; for(;*s != ‘\0‘;s++) { int n = *s-‘a‘; ptr = ptr->next[n]; if(ptr->e==1 && find2(s+1)) return true; } return false; } int main() { int i = 0; root = new node(); while(scanf("%s",str[i]) != EOF) { Insert(str[i]); i++; } for(int j = 0;j < i;j++) if(find1(str[j])) cout<<str[j]<<endl; return 0; }
以上是关于hdu-1247的主要内容,如果未能解决你的问题,请参考以下文章