#include<bits/stdc++.h> usingnamespace std; constint N = 26; // 开辟空间 structtrieNode{ char val; trieNode** son; int cnt; trieNode(char c){ val = c; son = new trieNode*[N]; for (int i = 0;i<N;i++) son[i]=nullptr; cnt = 0; } }; trieNode* root; // 插入操作 voidinsert(string s){ trieNode* p = root; for (int i = 0;i<s.size();i++){ int c = s[i]-'a'; if (!p->son[c])p->son[c] = newtrieNode(c); p = p->son[c]; } p->cnt++; } // 查询操作 intquery(string s){ trieNode* p = root; for (int i = 0;i<s.size();i++){ int c = s[i]-'a'; if (!p->son[c]) return0; p = p->son[c]; } return p->cnt; } intmain(){ root = newtrieNode(' '); for (int i = 0;i<5;i++){ string s; cin >> s; insert(s); } for (int i = 0;i<5;i++){ string s; cin >> s; cout << query(s)<<endl; } return0; }
#include<bits/stdc++.h> usingnamespace std; constint N = 26; constint M = 105; // 开辟空间 int trie[M][N]; int cnt[M]; int idx = 0; // 插入操作 voidinsert(string s){ int p = 0; for (int i = 0;i<s.size();i++){ int c = s[i]-'a'; if (!trie[p][c])trie[p][c]=++idx; p = trie[p][c]; } cnt[p]++; } // 查询操作 intquery(string s){ int p = 0; for (int i = 0;i<s.size();i++){ int c = s[i]-'a'; if (!trie[p][c]) return0; p = trie[p][c]; } return cnt[p]; } intmain(){ for (int i = 0;i<5;i++){ string s; cin >> s; insert(s); } for (int i = 0;i<5;i++){ string s; cin >> s; cout << query(s)<<endl; } return0; }
#include<bits/stdc++.h> usingnamespace std; constint N = 26; constint M = 105; // 开辟空间 vector<map<char,int>> trie; // 或使用unordered_map int cnt[M]; int idx = 0; // 插入操作 voidinsert(string s){ int p = 0; for (int i = 0;i<s.size();i++){ int c = s[i]-'a'; if (!trie[p][c])trie[p][c]=++idx; p = trie[p][c]; } cnt[p]++; } // 查询操作 intquery(string s){ int p = 0; for (int i = 0;i<s.size();i++){ int c = s[i]-'a'; if (!trie[p][c]) return0; p = trie[p][c]; } return cnt[p]; } intmain(){ trie = vector<map<char,int>>(M); for (int i = 0;i<5;i++){ string s; cin >> s; insert(s); } for (int i = 0;i<5;i++){ string s; cin >> s; cout << query(s)<<endl; } return0; }