欢迎使用CSDN-markdown编辑器
来源:互联网 发布:max 无法录入数据 编辑:程序博客网 时间:2024/04/28 19:08
hihoCoder 1014 Trie树
输入
输入的第一行为一个正整数n,表示词典的大小,其后n行,每一行一个单词(不保证是英文单词,也有可能是火星文单词哦),单词由不超过10个的小写英文字母组成,可能存在相同的单词,此时应将其视作不同的单词。接下来的一行为一个正整数m,表示小Hi询问的次数,其后m行,每一行一个字符串,该字符串由不超过10个的小写英文字母组成,表示小Hi的一个询问。输出
对于小Hi的每一个询问,输出一个整数Ans,表示词典中以小Hi给出的字符串为前缀的单词的个数。
#include<string>#include<iostream>using namespace std;struct TrieNode{ int value; bool end; TrieNode* next[26]; TrieNode(){ value = 0; end = false; for (int i = 0; i < 26; i++) { next[i] = nullptr; } }};class Trie {private: TrieNode *root; TrieNode* insert(TrieNode* x, string word, int d) { if (x == nullptr) x = new TrieNode(); if (d == word.length()){ x->end = true; x->value++; return x; } char c = word[d]; x->value++; x->next[c - 'a'] = insert(x->next[c - 'a'], word, d + 1); return x; }public: void insert(string word) { root = insert(root, word, 0); } int getPrefixCount(string word) { TrieNode *p = root; int i = 0; while (p != nullptr && i<word.length()) { p = p->next[word[i++] - 'a']; } if (p == nullptr) return 0; else return p->value; } Trie() { root = nullptr; }};int main(){ Trie trie = Trie(); int n = 0; cin>>n; for(int i = 0;i<n;i++) { string word; cin>>word; trie.insert(word); } int m; cin>>m; for(int j = 0;j<m;j++) { string prefix; cin>>prefix; cout << trie.getPrefixCount(prefix)<<endl; } return 0;}
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- Python 核心编程第六章6.1 6.2
- 学一点记一点之Linux/Centos(通用篇)
- fatal error C1010: unexpected end of file while looking for precompiled header directive
- 关于C语言多文件编写的一点小小总结
- mtk android 4.4.2系统, 添加ethernet
- 欢迎使用CSDN-markdown编辑器
- 【转载】Google Java编程风格指南
- java中抽象类和接口有什么区别
- asp.net 中数据传递时为何进行编码以及乱码错误
- Android中Service类onStartCommand返回值
- 网页设计——Dreamweaver
- 浅谈 C++中成员函数的重载、覆盖和隐藏
- c++文件\函数\头文件注释格式
- 软件企业研发人员激励机制研究