标签:ast sample enter comm sea ade compile nod tin
前面学了Trie,那么就即学即用。运用Trie数据结构来解决这道题目。
本题目比較简单,当然能够不使用Trie。只是多用高级数据结构还是非常有优点的。
题目:
input | output |
---|---|
6 na no ni ki ka ku k |
ka ki ku |
本题就是实现一个简单的字典提示功能,能够使用hash表的方法来做。实现起来也非常easy。
这里我做了个Trie Class来实现:
#include <iostream> using namespace std; #define ALPHA_SIZE 26 #define CHAR_TO_INDEX(c) (c - ‘a‘) struct HieroglyphsTrie_Node { int val; HieroglyphsTrie_Node *children[ALPHA_SIZE]; }; struct HieroglyphsTrie { HieroglyphsTrie_Node *root; int size; }; class HieroglyphsTrieClass { HieroglyphsTrie *pTrie; public: HieroglyphsTrieClass() { pTrie = (HieroglyphsTrie *) malloc (sizeof(HieroglyphsTrie)); init(); } HieroglyphsTrie_Node *getNode() { HieroglyphsTrie_Node *pNode = nullptr; pNode = (HieroglyphsTrie_Node *)malloc(sizeof(HieroglyphsTrie_Node)); if (pNode) { pNode->val = 0; for (int i = 0; i < ALPHA_SIZE; i++) { pNode->children[i] = nullptr; } } return pNode; } void init() { pTrie->root = getNode(); pTrie->size = 0; } void insert(const char key[]) { int len = strlen(key); int id = 0; HieroglyphsTrie_Node *pCrawl = pTrie->root; pTrie->size++; for (int lv = 0; lv < len; lv++) { id = CHAR_TO_INDEX(key[lv]); if (!pCrawl->children[id]) { pCrawl->children[id] = getNode(); } pCrawl = pCrawl->children[id]; } pCrawl->val = pTrie->size; } int search(char key[]) { int len = strlen(key); int id = 0; HieroglyphsTrie_Node *pCrawl = pTrie->root; for (int lv = 0; lv < len; lv++) { id = CHAR_TO_INDEX(key[lv]); if (!pCrawl->children[id]) return 0; pCrawl = pCrawl->children[id]; } return (int)(0 != pCrawl->val); } void HieroglyphsRun() { int n = 0; cin>>n; char ch[3];//不能是ch[2],由于后面还要多一个‘\0‘终止符 while (n--) { cin>>ch; insert(ch); } char k; cin>>k; HieroglyphsTrie_Node *pCrawl = nullptr; pCrawl = pTrie->root->children[CHAR_TO_INDEX(k)]; if (pCrawl) { for (int i = 0; i < ALPHA_SIZE; i++) { if (pCrawl->children[i]) { cout<<k<<char(‘a‘+i)<<endl; } } } } }; int main() { HieroglyphsTrieClass hie; hie.HieroglyphsRun(); return 0; }
Timus 1545. Hieroglyphs Trie的即学即用 实现字典提示功能
标签:ast sample enter comm sea ade compile nod tin
原文地址:http://www.cnblogs.com/lxjshuju/p/7142476.html