首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Trie 聚合

2013-09-06 
Trie 集合POJ 2418题意:给你一堆字符串,然后按字典序输出,再输出他们出现的频率。思路:trie。#define N 1111

Trie 集合

POJ 2418

题意:给你一堆字符串,然后按字典序输出,再输出他们出现的频率。

思路:trie。

#define N 1111111char in[N][22] ;char out[N] ;bool vis[11111] ;int insertanddelete(char *a , char *b){    int la = strlen(a) ;    int lb = strlen(b) ;    if(la <= lb)return 0 ;    int nn = 0 ;    int bb = 0 ;    for (int i = 0 ; i < la ; i ++ ){        if(a[i] == b[bb]){            nn ++ ;            bb ++ ;        }        else {            continue ;        }    }    if(nn == lb)return 1 ;return 0 ;}int replace(char *a ,char *b){    int la = strlen(a) ;    int lb = strlen(b) ;    if(la != lb)return 0 ;    int nn = 0 ;    for (int i = 0 ; i < la ; i ++ ){        if(a[i] != b[i])nn ++ ;    }    if(nn == 1)return 1 ;return 0 ;}int main(){    int num = 1 ;    while(scanf("%s",in[num]) != EOF){        if(in[num][0] != '#'){            num ++ ;        }        else {            while(scanf("%s",out) , out[0] != '#'){                bool flag = 0 ;                mem(vis ,0) ;                int lb = strlen(out) ;                for (int i = 1 ; i < num ; i ++ ){                    int la = strlen(in[i]) ;                    if(la == lb){                        int xx = 0 ;                        for (int j = 0 ; j < la ; j ++ ){                            if(in[i][j] != out[j]) xx ++ ;                        }                        if(xx == 0)flag = 1 ;                        if(flag)break ;                    }                    if(abs(la - lb) > 1)continue ;                    if(insertanddelete(in[i] , out) || insertanddelete(out , in[i]) || replace(in[i] , out)){                        vis[i] = 1 ;                    }                }                if(flag){                    printf("%s is correct\n",out) ;                }                else {                    printf("%s:",out) ;                    for (int i = 1 ; i < num ; i ++ )if(vis[i])printf(" %s",in[i]) ;                    puts("") ;                }            }        }    }    return 0 ;}


热点排行