poj 1002 (电话号码)

题目意思很简单,就不重复了。

这是一个很简单的模拟题,但是我居然wa了很多次。看了题目的讨论,才发现,电话号码还有数字0开头的。简直无语了。。。

2

0000000

0000000

这组数据输出 000-0000 2

也是考虑不全,居然没想到还会有0开头的电话号码。

代码如下:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char s1[55]= {"ABCDEFGHIJKLMNOPRSTUVWXY"};
int ans[111111],ot;
int main()
{
    int n,i,j,t,len;
    char s[111];
    scanf("%d",&n);

    ot=0;
    for(i=0; i<n; i++)
    {
        scanf("%s",s);
        len = strlen(s);
        int num=0;
        for(j=0; j<len; j++)
        {
            if(s[j]=='-')continue;
            if(s[j]>='0'&&s[j]<='9')num = num*10+(s[j]-'0');
            else if(s[j]>='A'&&s[j]<='Y')
            {
                for(t=0; t<26; t++)
                {
                    if(s[j]==s1[t])break;
                }
                num = num*10+(t/3)+2;

            }
        }
        ans[ot++]=num;
    }
    ans[ot++]=11111111;
    sort(ans,ans+ot);
    int tmp = 1;
    bool flag = false;
    for(i=1; i<ot; i++)
    {
        if(ans[i]==ans[i-1])tmp++;
        else
        {
            if(tmp>1)
            {
                printf("%03d-%04d %d\n",ans[i-1]/10000,ans[i-1]%10000,tmp);
                flag = true;
            }
            tmp = 1;
        }
    }
    if(!flag)printf("No duplicates.\n");

    return 0;
}


猜你喜欢

转载自blog.csdn.net/u011561033/article/details/45687873