poj 3630 Phone List

来源:互联网 发布:mac的照片 编辑:程序博客网 时间:2024/05/22 01:46

 给定 N 个电话号码,问是否有一个串是另一个的前缀。(trie的应用)
将它们排序之后依次两个两个做比较。

代码如下:

Source CodeProblem: 3630  User: softliumin Memory: 276K  Time: 188MS Language: C++  Result: Accepted Source Code #include<iostream>using namespace std; int cases, count;char tel[10005][11];int i, j; int cmp(const void *a, const void *b){    return strcmp( (char*)a,(char*)b );} int main(){    scanf("%d",&cases);    while(cases--)    {        bool flag = true;        scanf("%d",&count);        for(i = 0; i < count; i++)            scanf("%s",tel[i]);        qsort(tel,count,sizeof(char)*11,cmp);        int len1, len2;        for(i = 1; i < count; i++)        {            len1 = strlen(tel[i-1]);            len2 = strlen(tel[i]);            j = 0;            if(len1 <= len2)            {                while(tel[i-1][j] == tel[i][j] && j < len1)                    j++;                if(j == len1)                    flag = false;            }            if(!flag)                break;        }        if(flag)            printf("YES\n");        else            printf("NO\n");    }    return 0;}


 

原创粉丝点击