Tanky WooRSS

百练 OJ 2974 487 3279

25 May 2010
这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。

转载请写上本帖链接: 及【C++奋斗乐园/ACM乐园】

/**************************************** ID: 百练 OJ 2974 487 3279 题目地址: http://poj.pku.edu.cn/problem/2974/ My Name: Tanky_Woo My Website: C++奋斗乐园|C++学习|算法学习|ACM/ICPC学习 Website Link: http://www.cpply.com/

My BBS: C++奋斗乐园|C++论坛|算法论坛|ACM/ICPC论坛 BBS Link:http://www.cppleyuan.com/

My Blog:www.wutianqi.com 豆瓣小组:http://www.douban.com/group/cppleyuan/ QQ:17611904 QQ群:C++奋斗乐园①群:19333724(满) ②群:23840480 (满)       ③群:17314377 ④群:23829384 *****************************************/

/****************************************
ID: 百练 OJ 2974 487 3279
题目地址: http://poj.pku.edu.cn/problem/2974/
My Name: Tanky_Woo
My Website: C++奋斗乐园|C++学习|算法学习|ACM/ICPC学习
Website Link: http://www.cpply.com/

My BBS: C++奋斗乐园|C++论坛|算法论坛|ACM/ICPC论坛
BBS Link:http://www.cppleyuan.com/

My Blog:www.wutianqi.com
豆瓣小组:http://www.douban.com/group/cppleyuan/
QQ:17611904
QQ群:C++奋斗乐园①群:19333724(满) ②群:23840480 (满)
      ③群:17314377 ④群:23829384
*****************************************/

#include 
using namespace std;

char map[] = "22233344455566677778889999";
char str[80], telNumbers[100000][9];

int Mycompare(const void *e1, const void *e2)
{
    return (strcmp((char*)e1, (char *)e2));
}

void standardizeTel(int n){
    int j, k;  //j代表str的第j个元素, k代表

telNumbers[][]telNumbers[n][k]元素
    j = k = -1;
    while(k < 8)
    {
        j++;
        if(str[j] == '-')
            continue;
        k++;
        if(k == 3)
        {
            telNumbers[n][k] = '-';
            k++;
        }
        if(str[j] >= 'A' && str[j] <= 'Z')
        {
            telNumbers[n][k] = map[str[j] - 

'A'];
            continue;
        }
        telNumbers[n][k] = str[j];  //数字
    }
    telNumbers[n][k] = 0;

}

int main()
{
    int nCases, i, j;
    bool noduplicate;

    scanf("%d", &nCases;);
    for(i = 0; i < nCases; i++)
    {
        scanf("%s", str);
        standardizeTel(i);
    }

    qsort(telNumbers, nCases, 9, Mycompare);

    noduplicate = true;
    i = 0;
    while(i < nCases)
    {
        j = i;
        i++;
        while(i < nCases && strcmp(telNumbers[i], 

telNumbers[j]) == 0)
            i++;
        if(i - j > 1)
        {
            printf("%s %d\n", telNumbers[j] , 

i - j);
            noduplicate = false;
        }

    }
    if(noduplicate)
        printf("No duplicates.\n");
}