Phone List POJ3630

来源:互联网 发布:2016淘宝女装销量前十 编辑:程序博客网 时间:2024/06/06 10:53

题目:http://poj.org/problem?id=3630

题意很易懂,判断是否有电话号码是其他号码的前几位,关键在于不超时。

思路:按字典序排序后遍历判断是否有相邻两个号码短的是长的的前缀。

注:(1)string比较慢,考察超时的题尽量别用。
我就见过有同学用流读入然后超时的(手动滑稽)

语言:c风格的c++

#include <iostream>#include <cstdio>#include <cstring>#include <cctype>#include <cstdlib>using namespace std;char s[10010][20];int cmp(const void *a, const void *b){    return strcmp((char *)a, (char *)b);}bool str_cmp(int a){    int len = min(strlen(s[a-1]), strlen(s[a]));    int i;    for(i=0;i<len;i++)    {        if(s[a-1][i]!=s[a][i])            return false;    }    return true;}int main(){    int cases;    int i,j,k,len,n,t;    cin >> cases;    while(cases--)    {        cin >> n;        for(i=0;i<n;i++)        {            scanf("%s", s[i]);        }        qsort(s, n, sizeof(s[0]), cmp);        t = 0;        for(i=1;i<n;i++)        {            if(str_cmp(i))            {                t = 1;                break;            }        }        if(t==0)        {            puts("YES");        }        else        {            puts("NO");        }    }    return 0;}
0 0
原创粉丝点击