您的位置:首页 > 其它

POJ--1002 487-3279

2008-04-15 08:07 330 查看
#include<iostream>
#include<iomanip.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
main()
{
int i,j,line,k,duplicate=0,times;
char ssphone[101],snphone[8];
char phonetable[]="2223334445556667777888999"; //用差值填充字符数组,快速计算转换后的值
cin>>line;
long *nphone=new long[line];
for(i=0;i<line;i++)
{
cin>>ssphone;
k=0;
for(j=0;ssphone[j];j++)
{
if(ssphone[j]>='A'&&ssphone[j]<'Z')
{
snphone[k]=phonetable[ssphone[j]-'A'];
k++;
}
if(ssphone[j]>='0'&&ssphone[j]<='9')
{
snphone[k]=ssphone[j];
k++;
}
}
nphone[i]=atoi(snphone); //字符数组转化为int
}
qsort(nphone,line,sizeof(long),cmp); //qsort快速排序
for(i=0;i<line;)
{
times=1;
for(j=i+1;j<line&&nphone[j]==nphone[i];j++)
times++; //号码已排序 相同号码相邻 计算出现次数
if(times>1)
{
duplicate=1;
cout<<setfill('0')<<setw(3)<<nphone[i]/10000<<"-"<<setfill('0')<<setw(4)<<nphone[i]%10000<<" "<<times<<endl;
}
//上面输出语句对输出格式做了精确控制
i=j; //将j赋给i 跳到下个号码
}
if(duplicate==0)cout<<"No duplicates."<<endl;
delete[]nphone;
system("pause");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: