`
暴风雪
  • 浏览: 388968 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

[Tire树]poj 2001:Shortest Prefixes

阅读更多

大致题意:

    给出多个字符串,输出每个字符串的最短非公共前缀。

 

大致思路:

    tire的简单变形,每个节点加一个值来记录经过这个节点的字符串数即可。

 

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include <algorithm>
using namespace std;
const int inf=1<<28;
const int nMax=500;
const int mMax=100005;
class nodea{
public:
    int id;
    int vis;  //前缀记录标志
    nodea *p[26];
    nodea(){
        vis=0;
        int i;
        id=-1;
        for(i=0;i<26;i++)p[i]=NULL;
    }
};

nodea *root;
int cnt;

int insert(char *s){
    int i;
    nodea *r=root;
    int l=strlen(s);
    for(i=0;i<l;i++){
        r->vis+=1;
        if(r->p[s[i]-'a']==NULL){
            r->p[s[i]-'a']=new nodea();
        }
        r=r->p[s[i]-'a'];
    }
    if(r->id==-1){
        r->id=cnt;
        r->vis+=1;
        cnt++;
    }
    return r->id;
}
void getnum(char *s){
    int i;
    nodea *r=root;
    int l=strlen(s);
    for(i=0;i<l;i++){
        r=r->p[s[i]-'a'];
        if(r->vis==1){
            for(int j=0;j<=i;j++){
                cout<<s[j];
            }
            cout<<endl;
            return;
        }
    }
    cout<<s<<endl;
}
char str[mMax][nMax];

int main(){
    int n,i,t=0;
    while(scanf("%s",str[0])!=EOF){
        t=1;      //字符串总数
        cnt=1;
        root=new nodea();
        insert(str[0]);
        while(scanf("%s",str[t])!=EOF){
            if(str[t][0]=='?')break;    //这句是在调试时加上的,无实际用处~~
            insert(str[t]);
            t++;
        }
        for(i=0;i<t;i++){
            cout<<str[i]<<" ";
            getnum(str[i]);
        }
    }
    return 0;
}
 
0
1
分享到:
评论

相关推荐

    关于tire树

    ### 关于Trie树 #### 一、Trie树简介 Trie树,又称为前缀树或字典树,是一种用于存储字符串的树形数据结构。Trie树的优势在于可以高效地支持字符串的查找操作,尤其是在处理大量词汇时表现尤为突出。在搜索引擎、...

    CQ V2.0分词bates(基于双数组tire树)

    《CQ V2.0分词系统:基于双数组Tire树解析》 在信息技术领域,文本处理是一项至关重要的任务,而分词是文本处理的第一步。CQ V2.0是一个专门针对中文文本的分词系统,它采用了一种高效的数据结构——双数组Tire树,...

    什么是Tire树1

    Trie树,又称字典树或单词查找树,是一种用于高效存储和检索大量字符串的数据结构。它的设计目的是通过共享公共前缀来节省空间,并支持快速模式匹配。Trie树主要应用于信息检索、文本处理等领域。 Trie树有三种基本...

    TIRE 字典树 论文

    标题中的"TIRE字典树"实际上是指“Trie树”,也被称为前缀树或字典树,它是一种用于存储字符串的高效数据结构。在IT领域,Trie树因其在搜索和查找操作上的优异性能,特别是在处理大量字符串时,被广泛应用于搜索引擎...

    tire树分析

    **Trie树分析** 在计算机科学中,Trie树(又称前缀树或字典树)是一种用于存储关联数组的数据结构,特别适用于字符串查询。它通过将字符串的公共前缀组织在一起,使得查找效率得以显著提升。Trie树的主要特点是能够...

    Tire Models

    全面的轮胎模型。Using the Fiala Handling Force ...The Fiala tire model is the standard tire model that comes with all Adams/Tire modules. This chapter contains information for using the Fiala tire model:

    MF_Tire_GUI:魔术公式参数可视化和轮胎模型拟合GUI-matlab开发

    MF_Tire_GUI 有助于可视化每个魔术公式参数对轮胎纵向力与滑移率曲线的重要性。 GUI 能够可视化以下版本的 Magic Formula 轮胎模型: * Pacejka 92 (MF 5.2) *佩斯卡1996 此外,MF_Tire_GUI 现在可用于拟合轮胎模型...

    trie_suffix.rar_suffix tire_suffix tr_tire_串匹配_后缀树

    后缀树,也被称为字典树或Trie,是一种数据结构,主要应用于字符串搜索和处理。在计算机科学中,特别是文本处理和信息检索领域,后缀树是一种非常重要的工具,它能够高效地解决多字符串匹配问题。这个压缩包中的内容...

    tire_am_serializers:将Active Model序列化器添加到Tire结果中的简单方法

    gem 'tire-am_serializers' 用法 与相同: render json : User . search ( ... ) 只有一件事,Rails默认情况下会寻找TireUserSeralizer 。 如果类不存在,它将尝试找到UserSerailizer 。 如果此模型不存在...

    脏字屏蔽 中文 Tire Tree

    首先,我们要理解什么是Tire Tree(也称为Trie树或字典树)。Tire Tree是一种特殊的树形数据结构,用于存储字符串集合,特别适合于快速查找和插入操作。在脏字屏蔽的应用中,所有可能的脏字都会被预先插入到Tire ...

    tire_model.zip_tire_tire model_轮胎_魔术轮胎

    标题中的“tire_model.zip_tire_tire model_轮胎_魔术轮胎”暗示了这是一个关于轮胎模型的压缩文件,其中可能包含了一个或多个与轮胎性能、模拟和测试相关的数据或程序。"魔术轮胎"可能指的是一个特定的品牌或者一种...

    Samsung Tire题设

    Samsung Tire题目

    Advanced Vehicle Motion Control Using Novel Lateral Tire Force Sensors

    tire forces, obtained from a multi-sensing hub (MSHub) unit, are used to estimate lateral vehicle velocity and a roll angle. In order to estimate lateral vehicle velocity, the recursive least square ...

    tire-service:最好的服务

    设置 在python虚拟环境中,运行: pip install -r requirements.txt python manage.py migrate cars python manage.py createsuperuser (创建用于登录的用户) 运行应用程序 python manage.py runserver ...

    汽车零部件中英文对照.doc

    - 轮胎:Tire - 轮胎气门嘴:Tire Valve - 轮圈:Wheel Disk - 轮圈盖:Wheel Cover 2. 电装品(Electrical Parts) - 电瓶:Battery - 中央门控:Central Door Lock - 分电盘:Distributor - 火花塞:...

    DoubleArrayTrie:双端trie树的python实现

    DoubleArrayTrie 双端trie树的python实现 ...其与双数组Tire可以说在功能上互补; 在存储值很多且多有冲突、字符编码范围较大的情况下,双数组Trie树很可能在序列化到硬盘以及加载到内存的占用空间都远大于字典Trie树

    magic_tire_magictire_matlab_动力学分析_

    标题中的“magic_tire_magictire_matlab_动力学分析_”表明这是一个关于使用MATLAB进行车辆动力学分析,特别是关注轮胎力的项目。魔术轮胎(MagicTire)是一种广泛用于车辆模拟和动力学研究的软件工具,它能提供轮胎...

    tire-suggest_plugin:添加 Tyre 以与用于 elasticsearch 的建议器插件一起使用

    Tire . suggest ( 'cars' , field : 'name.suggest' , term : 'au' ) . suggestions #=&gt; ["audi", "audi 100", "audi 200", "audi 80", "audi 90", "audi a2", "audi a3", "audi a4", "audi a5", "audi a6"] 按多个...

    FIRST ORDER TIRE DYNAMICS

    ### 第一阶轮胎动力学研究的关键知识点 #### 1. 引言与轮胎建模的重要性 在进行汽车动态模拟时,“轮胎/路面”的模型构建至关重要,因为它直接影响到模拟结果的有效性。可以认为,准确地描述轮胎与路面之间的交互...

Global site tag (gtag.js) - Google Analytics