您的位置:首页 > 其它

POJ-1002-487-3279

2013-02-20 01:20 288 查看
这个题是个模拟题,给你一系列电话号码的形式,要求你统计出合法电话号码,并统计其个数

代码:

#include<cstdio>
#include<cstring>
#include<string>
#include<map>
#include<algorithm>
#include<iostream>
#define MAX 100001
using namespace std;
map<string,int> a;
int GetNumber(char c)
{
if(c<='O')
return (c-'A')/3+2;
if(c=='P'||c=='R'||c=='S')
return 7;
if(c>='T'&&c<='V')
return 8;
if(c>='W'&&c<='Y')
return 9;
}
int main()
{
int n;
scanf("%d",&n);
char ita[100],itb[100];
for(int i=0;i<n;i++)
{
scanf("%s",ita);
int cou=0;
for(int j=0;j<strlen(ita);j++)
{
if(ita[j]=='-')
continue;
if(ita[j]>='0'&&ita[j]<='9')
{
itb[cou++]=ita[j];
}
else if(ita[j]>='A'&&ita[j]<='Z')
{
itb[cou++]='0'+GetNumber(ita[j]);
}
if(cou==3)
itb[cou++]='-';
}
itb[cou]='\0';
a[itb]++;
}
int flag=0;
map<string,int>::iterator it;
for(it=a.begin();it!=a.end();++it)
{
if(it->second>1)
{
flag=1;
cout<<it->first<<" ";
cout<<it->second<<endl;
}
}
if(!flag)
printf("No duplicates.\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: