zoukankan      html  css  js  c++  java
  • HDU1251统计难题trie

    hash的一个变种.



    构造的树形如上图,不过有一点要记住,就是这道题中,,用next[id]这个指针来作为节点的地址。而通过next[id]->count来存放有这种前缀的单词的个数。。。

    代码:

    #include<iostream> 
    #include<cstring> 
    using namespace std; 
    typedef struct Trie 

        Trie* next[26]; 
        int count; 
    } xixi; 
    xixi root; 
    void maketrie(char* str)   //建立树形 

        xixi *p=&root,*q; 
        int len=strlen(str); 
     
        for(int i=0; i<len; i++) 
        { 
            int id=str[i]-'a'
            if(p->next[id]==NULL) 
            { 
                q=(xixi*)malloc(sizeof(xixi)); 
                for(int j=0; j<26; j++) 
                { 
                    q->next[j]=NULL; 
                } 
                q->count=1
                p->next[id]=q; 
                p=p->next[id]; 
            } 
            else 
            { 
                p->next[id]->count++; 
                p=p->next[id]; 
            } 
        } 

    void findcount(char* str)   //计算出现这种前缀的个数count 

        xixi *p=&root; 
        int len=strlen(str); 
        for(int i=0; i<len; i++) 
        { 
            int id=str[i]-'a'
            if(p->next[id]==NULL) 
            { 
                cout<<'0'<<endl; 
                return ; 
            } 
            else 
            { 
                p=p->next[id]; 
            } 
        } 
        cout<<p->count<<endl; 
        return ; 

    int main(void

        char str[20]; 
        while(gets(str),str[0]!='\0')//这里要注意,不能用‘\n’作为结束,这样就错误了。(哎,还犯这种错误) 
     
        { 
            maketrie(str); 
        } 
        while(gets(str)) 
        { 
            findcount(str); 
        } 
        return 0

     
     
     
  • 相关阅读:
    OC文件操作、获取文件属性
    【解决方法】Unexpected namespace prefix “xmlns” found for tag Layout
    hdu5301(2015多校2)--Buildings(构造)
    java_GC
    iOS开发项目之四 [ 调整自定义tabbar的位置与加号按钮的位置]
    李洪强-C语言3-数组
    李洪强-C语言2-字符串
    李洪强-C语言1-指针
    【C语言】07-基本语句和运算
    【C语言】06-基本数据类型
  • 原文地址:https://www.cnblogs.com/cchun/p/2520065.html
Copyright © 2011-2022 走看看