zoukankan      html  css  js  c++  java
  • 字典树基础

    int  trie[400100][26];
    int sum[400100];
    int pos=1;
    void insert1(char *s)
    {
        int root=0;
        for(int i=0;i<strlen(s);i++)
        {   int ch=s[i]-'a';
            if( trie[ root ][ch]==0  )
              {
                 memset(trie[pos],0,sizeof(trie[pos]));//用多少初始化多少
                 trie[root][ch]=pos++;
              }
            root=trie[root][ch];
        }
        sum[root]=1;
    }
    
    int find1(char *s)
    {
        int root=0;
        for(int i=0;i<strlen(s);i++)
        {
            int ch=s[i]-'a';
            if( trie[root][ch]==0 )return false;
            root=trie[root][ch];
        }
        return sum[root];
    
    }
    int main()
    {
        pos=1;
        memset(sum,0,sizeof(sum));
        memset(trie[0],0,sizeof(trie[0]));
        
        
        
        return 0;
    }

    指针写法

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    char s[11];
    int n,m;
    bool p;
    struct node
    {
        int count;
        node * next[26];
    }*root;
    node * build()
    {
        node * k=new(node);
        k->count=0;
        memset(k->next,0,sizeof(k->next));
        return k;
    }
    void insert()
    {
        node * r=root;
        char * word=s;
         while(*word)
        {
            int id=*word-'a';
            if(r->next[id]==NULL) r->next[id]=build();
            r=r->next[id];
            r->count++;
            word++;
        }
    }
    int search()
    {
        node * r=root;
        char * word=s;
        while(*word)
        {
            int id=*word-'a';
            r=r->next[id];
            if(r==NULL) return 0;
            word++;
        }
        return r->count;
    }
    int main()
    {
        root=build();
        scanf("%d",&n);
        for(int i=1;i<=n;i++) 
        {
                cin>>s;
                insert();
        }
        scanf("%d",&m);
        for(int i=1;i<=m;i++)
        {
            cin>>s;
            printf("%d
    ",search());
        }
    }
    View Code
  • 相关阅读:
    vue-slot插槽
    js中filter函数
    js异步处理
    js变量提升
    js中的4种函数调用模式
    js方法
    Javascript中的闭包 O__O "…
    js实现瀑布流以及加载效果
    2D转换下的zoom和transform:scale的区别
    [转]JavaScript与元素间的抛物线轨迹运动
  • 原文地址:https://www.cnblogs.com/bxd123/p/10342068.html
Copyright © 2011-2022 走看看