zoukankan      html  css  js  c++  java
  • 算法复习——trie树(poj2001)

    题目:

    题目描述

    给出 n 个单词(1<=n<=1000),求出每个单词的非公共前缀,如果没有,则输出自己。

    输入格式

    输入 N 个单词,每行一个,每个单词都是由 1~20 个小写字母构成。

    输出格式

    输出 N 行,每行由一个空格的两部分,第一部分是输入的单词,第二部分是该单词在所有单词中的非公共前缀,如果没有,则输出自己。

    样例数据 1

    输入  [复制]

     
    carbohydrate 
    cart 
    carburetor 
    caramel 
    caribou 
    carbonic 
    cartilage 
    carbon 
    carriage 
    carton 
    car 
    carbonate

    输出

    carbohydrate carboh 
    cart cart 
    carburetor carbu 
    caramel cara 
    caribou cari 
    carbonic carboni 
    cartilage carti 
    carbon carbon 
    carriage carr 
    carton carto 
    car car 
    carbonate carbona

    题解:

    trie树模板题

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<ctime>
    #include<cctype>
    #include<cstring>
    #include<string>
    #include<algorithm>
    using namespace std;
    const int N=40005;
    struct node
    {
      int son[30],cnt;
    }trie[N];
    char s[1005][25];
    int n,len,tot=0;
    inline void build(char t[])
    {
      int temp=0;
      for(int i=1;i<=len;i++)
      {
        if(!trie[temp].son[t[i]-'a'])
          trie[temp].son[t[i]-'a']=++tot;
        temp=trie[temp].son[t[i]-'a'];
        trie[temp].cnt++;
      }
    }
    inline void find(char t[])
    {
      int temp=0;
      for(int i=1;i<=len;i++)
      {
        cout<<t[i];
        if(trie[trie[temp].son[t[i]-'a']].cnt==1)  return;  
        temp=trie[temp].son[t[i]-'a'];
      }
    }
    int main()
    {
      //freopen("a.in","r",stdin);
      while(scanf("%s",s[++n]+1)!=EOF)
      {
        len=strlen(s[n]+1);
        build(s[n]);
      }
      for(int i=1;i<=n;i++)
      {
        printf("%s ",s[i]+1);len=strlen(s[i]+1);
        find(s[i]);
        cout<<endl;
      }
      return 0;
    }
  • 相关阅读:
    物料清单概述
    java开发webservice的1种方式
    java web service简单示例
    IOS证书过期
    Windows 2012 R2 安装net4.6.1
    sqlserver 性能调优脚本
    solidty--owner.sol
    ERC20-USDT
    EOS 公开节点及自有节点部署
    微信第三方平台授权流程
  • 原文地址:https://www.cnblogs.com/AseanA/p/7487034.html
Copyright © 2011-2022 走看看