poj 1002

极目,远眺(752284118) 16:03:43
poj 1002 用C++提交AC,G++超时
#include <iostream>
#include <map>
#include <string>
#include <cstring>
#include <cstdio>
using namespace std;
map<string,int> my;
char a[30]="2223334445556667777888999";
int main(int argc, char *argv[])
{
int n,i,j,sum; char ss[1005],s[1005];
while(scanf("%d",&n)!=EOF)
{
my.clear(); sum=0;
while(n--)
{
scanf("%s",ss);
for(j=i=0;i<strlen(ss);i++)
{
if(j==3) s[j++]='-';
if(ss[i]>='A'&&ss[i]<='Z') s[j++]=a[ss[i]-'A'];
else if(ss[i]!='-') s[j++]=ss[i];
}
s[j]=0;
my[s]++;
}
map<string,int> ::iterator it;
for(it=my.begin();it!=my.end();it++)
{
if((*it).second>1) {cout<<(*it).first; printf(" %d\n",(*it).second); sum++;}
}
if(!sum) printf("No duplicates.\n");
}
return 0;
}

posted @ 2014-08-10 17:53  2014acm  阅读(180)  评论(0编辑  收藏  举报