您的位置:首页 > 其它

POJ1002 2013.3.17

2016-02-13 19:51 281 查看
POJ1002 2013.3.17

WA因:

1. 没有冗余的时候输出No duplicates.,没有注意到

2. 不足7位要补零,没注意到

TLE因:

1.刚开始用的qsort,最后换成哈希,就过了

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAXN 100010

int dic[256]={0},n;
int phone[10000000]={0};

void clearit()
{
dic['0']=0;dic['1']=1;
dic['A']=2;dic['B']=2;dic['C']=2;dic['2']=2;
dic['D']=3;dic['E']=3;dic['F']=3;dic['3']=3;
dic['G']=4;dic['H']=4;dic['I']=4;dic['4']=4;
dic['J']=5;dic['K']=5;dic['L']=5;dic['5']=5;
dic['M']=6;dic['N']=6;dic['O']=6;dic['6']=6;
dic['P']=7;dic['R']=7;dic['S']=7;dic['7']=7;
dic['T']=8;dic['U']=8;dic['V']=8;dic['8']=8;
dic['W']=9;dic['X']=9;dic['Y']=9;dic['9']=9;
return ;
}

int main()
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
int flagf,flag=1;
int i,ls,j,k,pn;
char str[100005];
clearit();
scanf("%d",&n);
if(n==0)
{
printf("No duplicates.\n");
return 0;
}
getchar();
for(i=0;i<n;i++)
{
flagf=1;
scanf("%s",str);
getchar();
ls=strlen(str);
pn=0;
for(k=0;k<ls;k++)
{
if (!((str[k]<='Z' && str[k]>='A')||(str[k]>='0' && str[k]<='9'))) continue;
if ((str[k]=='Q')||(str[k]=='Z')) continue;
pn=pn*10+dic[str[k]];
}
phone[pn]++;

}
for(i=0;i<=9999999;i++)
{
if (phone[i]>1)
{
printf("%03d-%04d %d\n",i/10000,i%10000,phone[i]);
flag=0;
}
}
if (flag==1)
printf("No duplicates.\n");
fclose(stdin);
fclose(stdout);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: