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

     

     

    HDU 1251

    代码
    #include<iostream>
    using namespace std;

    const int kind=26;//字母种类

    struct Treenode//树的结点结构
    {
    int count;//这个附加变量在本题中记录遍历到该结点形成的字符串出现的次数,在不同题中可记录不同的内容。
    Treenode *next[kind];//指向儿子结点
    Treenode()//每个结点的初始化
    {
    count
    =1;
    for(int i=0;i<kind;i++)
    next[i]
    =NULL;
    }
    };

    void insert(Treenode *&root,char *word)//向以root为根结点的树中插入串word
    {
    Treenode
    *location=root;
    int i=0,branch=0;

    if(location==NULL) {location=new Treenode();root=location;}

    while(word[i])
    {
    branch
    =word[i]-'a';
    if(location->next[branch]) location->next[branch]->count++;//如果该字符存在,串数量加1
    else location->next[branch]=new Treenode();//如果不存在,建新结点
    i++;
    location
    =location->next[branch];
    }
    }

    int search(Treenode *root,char *word)//查找,与插入类似
    {
    Treenode
    *location=root;
    int i=0,branch=0,ans;

    if(location==NULL) return 0;

    while(word[i])
    {
    branch
    =word[i]-'a';
    if(!location->next[branch]) return 0;
    i
    ++;
    location
    =location->next[branch];
    ans
    =location->count;
    }
    return ans;
    }
    int main()
    {
    char word[10];
    char ask[10];
    Treenode
    *root=NULL;
    while(gets(word))
    {
    if(word[0]=='\0') break;
    insert(root,word);
    }
    while(gets(ask))
    cout
    <<search(root,ask)<<endl;
    return 0;
    }
  • 相关阅读:
    二分法查找(C语言)
    冒泡排序法(C语言)
    Python 字符串操作方法大全
    guns搭建笔记
    mysql数据库下载及安装
    docker安装
    自动化学习路径及问题汇总目录
    UI自动化使用docker做并行执行
    allure趋势图无数据
    allure报告不显示@Attachment
  • 原文地址:https://www.cnblogs.com/ACAC/p/1782198.html
Copyright © 2011-2022 走看看