【电话号码排序--简单 qsort函数】

Phone List

Time Limit: 2 Sec  Memory Limit: 64 MB Submit: 359  Solved: 79 [Submit][Status][Discuss]

Description

Given a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let‘s say the phone catalogue listed these numbers:

- Emergency 911
- Alice 97 625 999
- Bob 91 12 54 26

In this case, it‘s not possible to call Bob, because the central would direct your call to the emergency line as soon as you had dialled the first three digits of Bob‘s phone number. So this list would not be consistent.

Input

The first line of input gives a single integer, 1 <= t <= 40, the number of test cases. Each test case starts with n, the number of phone numbers, on a separate line, 1 <= n <= 10000.Then follows n lines with one unique phone number on each line. A phone number is a sequence of at most ten digits.

Output

For each test case, output "YES" if the list is consistent, or "NO" otherwise.

Sample Input

2
3
911
97625999
91125426
5
113
12340
123440
12345
98346

Sample Output

NO
YES

HINT

zoj2876

Source

The 2007 Nordic Collegiate Programming Contest

注释:qsort函数格式:  int cmp(const void* a,const void* b)
                                   {
                                              return strcmp((char*)a,(char*)b);
                                   }
                                    int main()

{

qsort(a,n,sizeof(a[0])【数组内存大小】,cmp);【大小排序】

}

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int cmp(const void* a,const void* b)
{
    return strcmp((char*)a,(char*)b);
}
int main()
{
    int t,n,i,temp,j,len;
    char a[10000][20],str[20];
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);getchar();
        temp=0;
        for(i=0;i<n;i++)
        {
            gets(a[i]);
        }

        qsort(a,n,sizeof(a[0]),cmp);

        for(i=0;i<n-1;i++)
        {
            if(strncmp(a[i],a[i+1],strlen(a[i]))==0)
            {
                temp=1;
                break;
            }
        }
        if(temp==0)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

  

  

时间: 2024-10-31 15:51:36

【电话号码排序--简单 qsort函数】的相关文章

qsort 函数的使用——对普通数组、指针数组、二维数组中的元素进行排序

在ANSI C中,qsort函数的原型是 #include <stdlib.h> void qsort(void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *)); 解释:qsort函数对含有nmemb个元素的数组进行排序,而base指针指向数组的第一个元素.这个数组的元素个数由size指定. compar函数对qsort的比较操作进行定义,所以可以定制数字的比较,字符串的比较,甚至结构体

qsort函数排序各种类型的数据。

qsort函数是库函数中的一员,我们先来看看官方文档是怎么写的: 其中qsort的参数void* base是传入一个数组,size_t num 为数组整体大小,size_t size 为单个元素的大小,int (*compar)(const void*,const void*)是需要使用者去完成的一个比较函数 针对这个函数,在不同类型的数组中需要用不同的处理方式,来保证数组中的元素大小不会失真(例如在处理double型的数组时就需要用不同的方式来进行) 比较函数的返回值是; return val

qsort函数以及sort函数使用方法

?? sort函数的使用方法 做ACM题的时候,排序是一种常常要用到的操作. 假设每次都自己写个冒泡之类的O(n^2)排序,不但程序easy超时,并且浪费宝贵的比赛时间,还非常有可能写错. STL里面有个sort函数,能够直接对数组排序,复杂度为n*log2(n).使用这个函数.须要包括头文件. 这个函数能够传两个參数或三个參数. 第一个參数是要排序的区间首地址,第二个參数是区间尾地址的下一地址.也就是说.排序的区间是[a,b).简单来说,有一个数组int a[100].要对从a[0]到a[99

qsort函数、sort函数 (精心整理篇)

先说明一下qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的. 首先说一下, qsort qsort(基本快速排序的方法,每次把数组分成两部分和中间的一个划分值,而对于有多个重复值的数组来说,基本快速排序的效率较低,且不稳定).集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决排序这个问题.所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分. 具体介绍:-^^ void qsort( void *base, size_t n

qsort函数、sort函数【转】

http://blog.163.com/yuhua_kui/blog/static/9679964420142195442766/ 先说明一下:qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的. 首先说一下, qsort qsort(基本快速排序的方法,每次把数组分成两部分和中间的一个划分值,而对于有多个重复值的数组来说,基本快速排序的效率较低,且不稳定).集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决排序这个问题.所谓三路划分,是指把数组划

qsort函数、sort函数 (精心整理篇)(转载)

qsort函数.sort函数 (精心整理篇) 先说明一下qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的. 首先说一下, qsort qsort(基本快速排序的方法,每次把数组分成两部分和中间的一个划分值,而对于有多个重复值的数组来说,基本快速排序的效率较低,且不稳定).集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决排序这个问题.所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分. 具体介绍:-^^ void qsor

C语言qsort函数用法

qsort函数简介 排序方法有很多种:选择排序,冒泡排序,归并排序,快速排序等. 看名字都知道快速排序是目前公认的一种比较好的排序算法.因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用. 这就是qsort函数.它是ANSI C标准中提供的,其声明在stdlib.h文件中,是根据二分法写的,其时间复杂度为n*log(n) 功能: 使用快速排序例程进行排序 头文件:stdlib.h 用法:  void qsort(void* base,size_t num,size_t width,in

qsort()函数详解

一 写在开头1.1 本节内容学习C语言中的qsort()函数. 二 qsort()2.1 函数原型 void qsort( void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *) ); 函数功能:qsort()函数的功能是对数组进行排序,数组有nmemb个元素,每个元素大小为size. 参数base       - base指向数组的起始地址,通常该位置传入的是一个数组名参数nmemb  -

qsort函数、sort函数

先说明一下qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的. 首先说一下, qsort qsort(基本快速排序的方法,每次把数组分成两部分和中间的一个划分值,而对于有多个重复值的数组来说,基本快速排序的效率较低,且不稳定).集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决排序这个问题.所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分. 具体介绍:-^^ void qsort( void *base, size_t n