zoukankan      html  css  js  c++  java
  • poj 2001 Shortest Prefixes(Trie)

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int ch[30000][30];
    int val[30000][30];
    char str[1000+10][20+10];
    int sz;
    int idx(char c) {return c-'a';}
    void insert(char *s)
    {
        int u=0;
        int len=strlen(s);
        int i;
        for(i=0;i<len;i++)
        {
           int c=idx(s[i]);
           while(!ch[u][c])
           {
               memset(ch[sz],0,sizeof(sz));
               ch[u][c]=sz++;
           }
           val[u][c]++;
           u=ch[u][c];
        }
    }
    void print(char *s)
    {
        int u=0;
        int len=strlen(s);
        int i,j,k;
        for(i=0;i<len;i++)
        {
            int c=idx(s[i]);
            printf("%c",s[i]);
            if(val[u][c]==1) return;
            u=ch[u][c];
        }
        return ;
    }
    int main()
    {
        int n=0;
        int i,j,k;
        sz=1;
        memset(ch[0],0,sizeof(ch[0]));
        memset(val,0,sizeof(val));
        while(scanf("%s",str[n])!=EOF)
        {
            insert(str[n]);
            n++;
        }
        for(i=0;i<n;i++)
        {
            printf("%s ",str[i]);
            print(str[i]);
            printf("
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    创建数据库链
    redis命令
    redis.conf文件配置信息
    mybatis调用存储过程实现
    oracle游标使用遍历3种方法
    Proud Merchants
    Bag Problem
    Watch The Movie
    Accepted Necklace
    Bone Collector II
  • 原文地址:https://www.cnblogs.com/sola1994/p/4617549.html
Copyright © 2011-2022 走看看