uva 755 487--3279

这道题WA了很多次,最后发现输出的时候第三位要带上‘-’ = =...
而且UVA很坑爹的是不能用strcmpi,strupr!!!!
 
 
View Code
#include<string>
#include<stdlib.h>
#include<cstdio>
#include<stdio.h>
#include<string.h>
typedef struct node
{
    char num[35];
    int count;
}tele;
tele tel[100005];
int cmp(const void *a,const void *b)
{
    return strcmp((*(struct node*)a).num,(*(struct node*)b).num);
}
void transfrom(char str[],char num[])
{
    int i,j;
    int len;
    len = strlen(str);
    for(i = 0;i < len;i++)
    if(str[i] >= 'a'&&str[i] <= 'z')
    str[i] -= 32;

    for(i =0,j = 0; str[i] != 0;i++)
    {
        if(isdigit(str[i]))
        num[j++] = str[i];
        else if(isalpha(str[i]))
        {
            if(str[i]<='C' && str[i]>= 'A')
            num[j++] = '2';
            if(str[i] <= 'F' && str[i]>= 'D')
            num[j++] = '3';
            if(str[i] <= 'I' && str[i] >= 'G')
            num[j++] = '4';
            if(str[i] <= 'L' && str[i] >= 'J')
            num[j++] = '5';
            if(str[i] <= 'O' && str[i] >= 'M')
            num[j++] = '6';
            if(str[i] == 'S' ||  str[i] == 'P' ||str[i] == 'R')
            num[j++] = '7';
            if(str[i] == 'V' ||str[i] == 'T' ||str[i] == 'U' )
            num[j++] = '8';
            if(str[i] == 'W' ||str[i] == 'X' ||str[i] == 'Y' )
            num[j++] = '9';
        }
        if(j == 3)
        num[j++] = '-';
    }
    num[j] = '\0';
}
int main()
{
    int t,n,i,j,count;
    char str[100],num[15];
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(i = 0;i < n;i++)
        {
            scanf("%s",str);
            transfrom(str,num);
            strcpy(tel[i].num,num);
            tel[i].count = 1;
        }
        qsort(tel,n,sizeof(tel[0]),cmp);
        int leap;
        leap = 1;
        for(i = 0;i < n-1;i++)
        {
            int count = 1;
            if(strcmp(tel[i].num,tel[i+1].num)==0 && i< n)
            {
                while(strcmp(tel[i].num,tel[i+1].num)==0&&i<n) count++,i++;
                printf("%s %d\n",tel[i].num,count);
                leap = 0;
            }

        }
        if(leap)
        puts("No duplicates.");
        if(t)
        puts("");
    }
    return 0;
}
posted @ 2012-07-24 16:53  某某。  阅读(214)  评论(0编辑  收藏  举报