wustoj2613电话号码(字典树)

题目链接:http://10.162.32.3/problem.php?id=2613&soj=0

分析:要求独一无二的字符串,可把每个号码的所有后缀都插入字典树,这样就会得到每个号码的所有子串,然后枚举每个号码的每个后缀,假设删除该后缀后,不存在该后缀了那么该后缀肯定是独一无二的,最后恢复一下就好了。

Ac code:

#include
using namespace std;
typedef long long ll;
const int maxn=1e4+5;
int len;
string ans;
struct Trie
{
    int ch[maxn*20][12],val[maxn*20];
    int sz;
    void init()
    {
        memset(ch,0,sizeof ch);
        memset(val,0,sizeof val);
        sz=0;
    }
    void insert(string s)
    {
        int rt=0;
        for(int i=0; itmp.size()){
                    len=tmp.size();
                    ans=tmp;
                }
                else if(len==tmp.size()){
                    ans=min(ans,tmp);
                }
            }
        }
    }
}T;
string s[maxn];
int main()
{
    int n;
    while(cin>>n)
    {
        T.init();
        for(int i=1;i<=n;i++){
            cin>>s[i];
            for(int j=0;j

 

你可能感兴趣的:(数据结构)