poj 2418 Hardwood Species(Trie)

来源:互联网 发布:明斯克协议 知乎 编辑:程序博客网 时间:2024/06/08 04:27

第一次做这个题用map做的,这次用字典树做的。

#include <cstdio>#include <cstring>struct Trie{    int cnt;    char str[33];    Trie *next[127];    Trie()    {        cnt = 0;        memset(next,0,sizeof(next));    }};char s[33];Trie *root;int num;void Insert(char *s){    Trie *p = root;    int len = 0;    while(s[len] != '\0')    {        int index = s[len++];        if(!p->next[index])            p->next[index] = new Trie;        p = p->next[index];    }    strcpy(p->str,s);    p->cnt++;}void Print(Trie *p){    if(!p) return;    if(p->cnt)        printf("%s %.4f\n",p->str,(p->cnt/(double)num)*100);    for(int i = 0; i < 127; ++i)        if(p->next[i]) Print(p->next[i]);}int main(){    //freopen("in.txt","r",stdin);    num = 0;    root = new Trie;    while(gets(s))    {        Insert(s);        ++num;    }    Print(root);    return 0;}
0 0