hdu 1251

xiaoxiao2021-02-28  89

一道字典树,并不难。坑的是c++与g++的区别,我也没搞懂。但是g++交oj是MLE。

#include<cstdio> #include<cstring> struct node { node *nex[27]; int cnt; node() { memset(nex, 0, sizeof(nex)); cnt = 0; } }; void build_tree(char *str, node *rt) { node *p = rt; int len = strlen(str); for(int i = 0; i < len; i++) { int pos = str[i] - 'a'; if(p->nex[pos] == NULL) p->nex[pos] = new node(); p = p->nex[pos]; p->cnt += 1; } } void search_tree(char *str, node *rt) { int ans = 0; node *p = rt; int len = strlen(str); int flag = true; for(int i = 0; i < len; i++) { int pos = str[i] - 'a'; if(p->nex[pos] != NULL) p = p->nex[pos]; else {flag = false; break;} } if(flag) ans = p->cnt; printf("%d\n", ans); } int main() { char str[20]; node *rt = new node(); while(gets(str)) { if(!strcmp(str, "")) break; build_tree(str, rt); } while(scanf("%s", str) == 1) { search_tree(str, rt); } return 0; }

转载请注明原文地址: https://www.6miu.com/read-56360.html

最新回复(0)