HDU1247 Hat’s Words
来源:互联网 发布:金方圆数控折弯机编程 编辑:程序博客网 时间:2024/05/20 22:39
PS: Trie树的应用。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <vector>using namespace std;const int maxn = 50010;const int MAX = 200;//2014-04-05 Accepted124715MS7368K2121 BC++Achiberxstruct node { int v; node* next[26];};node* root;int cnt[MAX];void Insert(char* str) { node* now = root; int len = strlen(str); for(int i = 0; i < len; i++) { int u = str[i]-'a'; if(now->next[u]==NULL) { node* t = new node; t->v = 0; memset(t->next, NULL, sizeof(t->next)); now->next[u] = t; } now = now->next[u]; } now->v = -1; // represent the ending of word.}bool query2(char* str) { node* now = root; int len = strlen(str); for(int i = 0; i < len; i++) { int u = str[i]-'a'; if(now->next[u] != NULL) { now = now->next[u]; if(i==len-1 && now->v ==- 1) return true; } else return false; } return false;}bool query(char* str) { vector<int> v; v.clear(); node* now = root; int len = strlen(str); for(int i = 0; i < len; i++) { int u = str[i]-'a'; if(now->next[u] != NULL) { now = now->next[u]; if(now->v==-1) { v.push_back(i); } } else break; } if(!v.size()) return false; char remain[100]; memset(remain, '\0', sizeof(remain)); for(int i = 0; i < (int)v.size(); i++) { int st = v[i]; strcpy(remain, str+st+1); if(!strlen(remain)) return false; bool result = query2(remain); if(result) return true; else continue; } return false;}char lib[maxn+5][100];int main(){ char str[100]; int idx = 0; root = new node; root->v = 0; memset(root->next, NULL, sizeof(root->next)); while(gets(str) && str[0]) { Insert(str); strcpy(lib[idx++], str); } for(int i = 0; i < idx; i++) { bool res = query(lib[i]); if(res) puts(lib[i]); } return 0;}
0 0
- hdu1247 Hat’s Words
- HDU1247 Hat’s Words
- hdu1247 Hat’s Words
- hdu1247 hat's words
- hdu1247 Hat’s Words
- hdu1247 Hat’s Words
- hdu1247 Hat’s Words
- hash hdu1247 Hat’s Words
- HDU1247 Hat’s Words【Trie】
- Hat's Words hdu1247 trie
- 【字典树】 hdu1247 Hat’s Words
- Hat’s Words hdu1247 字典树+搜索
- HDU1247-Hat’s Words(字典树)
- Hat’s Words(hdu1247字典树)
- hdu1247 Hat’s Words (字典树)
- hdu1247 Hat’s Words(字典树)
- HDU1247-Hat’s Words(trie树)
- HDU1247 Hat’s Words 【trie树】
- Java HashMap遍历
- 队列逆置
- DevExpress XtraTreeList 节点拖拽
- 常用字符串函数
- 大国的思维
- HDU1247 Hat’s Words
- 第六章 APO文件目录系统
- leetCode解题报告5道题(四)
- job1003 A+B
- Eclipse集成Maven
- LeetCode: Remove Duplicates from Sorted List
- Java JDBC 理论笔记
- php&mysql(图片上传)
- java StringBuffer使用