// [7/16/2014 Sjm] /* 字典树 + 深搜。。。 (好久没碰搜索了,调试了一段时间,不过还好1A。。。)*/
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm> #include <map> #include <string> #include <functional> using namespace std; const int MAX = 26; map<int, string> my_map; string ans_str; int max_val; bool myJudge; struct Trie{ int val; Trie* next[MAX]; Trie(){ val = 0; memset(next, NULL, sizeof(next)); } }; Trie* Root; void CreTrie(char* str, int t_val) { int len = strlen(str); Trie* p = Root; for (int i = 0; i < len; i++) { int pos = str[i] - 'a'; if (!(p->next[pos])) { p->next[pos] = new Trie; } p->next[pos]->val += t_val; p = p->next[pos]; } } void DelTrie(Trie* T) { for (int i = 0; i < MAX; i++) { if (T->next[i]) { DelTrie(T->next[i]); } } delete[] T; } void Dfs_Trie(char* str, int pos, Trie* p, string for_ans_str) { if (strlen(str) == pos) { myJudge = true; if (p->val > max_val) { ans_str = for_ans_str; max_val = p->val; } return; } int key = str[pos] - '0'; int len = my_map[key].size(); for (int i = 0; i < len; i++) { int now_node = my_map[key][i] - 'a'; if (!(p->next[now_node])) { continue; } else { Dfs_Trie(str, pos + 1, p->next[now_node], for_ans_str + my_map[key][i]); } } } int main() { my_map[2] = "abc"; my_map[3] = "def"; my_map[4] = "ghi"; my_map[5] = "jkl"; my_map[6] = "mno"; my_map[7] = "pqrs"; my_map[8] = "tuv"; my_map[9] = "wxyz"; //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); int N; scanf("%d", &N); char str[105], num[105]; int w, m, val; for (int i = 1; i <= N; i++) { printf("Scenario #%d:\n", i); Root = new Trie; scanf("%d", &w); while (w--) { scanf("%s %d", str, &val); CreTrie(str, val); } scanf("%d", &m); while (m--){ scanf("%s", num); int len = strlen(num) - 1; char t_str[105] = { '\0' }; for (int j = 1; j <= len; j++) { strncpy(t_str, num, j); myJudge = false; max_val = 0; Dfs_Trie(t_str, 0, Root, ""); if (!myJudge) { printf("MANUALLY\n"); } else { cout << ans_str << endl; } } printf("\n"); } printf("\n"); DelTrie(Root); } return 0; }
字典树 + 深搜 之 hdu 1298
最新推荐文章于 2021-03-05 21:35:52 发布