您的位置:首页 > 其它

POJ 1002 487-3279(水题)

2013-10-29 21:59 417 查看
没什么好说的,事先设置一个表,对应字母到数字的转换,读入每一位并对应转换成int存起来,排序后即可判断有多少重复,代码还是丑陋不堪,C和C++不分

#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
int numint[110000]={0};
char number[110000][100]={0};
int compare(const void *a, const void *b)
{
return(*(int *)a-*(int *)b);
}
int main()
{
int n=0,i=0,j=0,N=0,point=1000000,d[40]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9},k=0;
cin>>n;
getchar();
for(i=0;i<n;i++)
{
gets(number[i]);
N=strlen(number[i]);
point=1000000;
for(j=0;j<N;j++)
{
if(number[i][j]=='-')
{
continue;
}
if(number[i][j]<='9'&&number[i][j]>='0')
{
numint[i]+=(number[i][j]-'0')*point;
point=point/10;
continue;
}
numint[i]+=d[number[i][j]-'A']*point;
point=point/10;
}
}
qsort(numint,n,sizeof(int),compare);
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(numint[i]!=numint[j])
{
if(j-i>1)
{
printf("%03d-%04d %d\n", numint[i]/10000, numint[i]%10000, j-i);
i=j-1;
k=1;
break;
}
else
{
i=j-1;
break;
}
}
}
if(numint[i]==numint[j-1]&&j==n&&i!=j-1)
{
printf("%03d-%04d %d\n", numint[i]/10000, numint[i]%10000, j-i);
k=1;
break;
}
}
if(!k)
{
cout<<"No duplicates."<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: