您的位置:首页 > 其它

poj 1002

2014-11-02 22:30 176 查看
这题有些麻烦表面上是简单的将字母转换成数字然后进行排序比对,实际操作还是比价麻烦的,首先数组需要定义足够大,注意数组的越界问题,这题最好是将字母转换成数组然后进行比对。

#include<stdio.h>

#include<string.h>

#define N 10000000

int a[10000000]={0};

char ch(char c)

{

if(c=='0'||c=='1')

return c;

if(c=='2'||c=='A'||c=='B'||c=='C')

return '2';

if(c=='3'||c=='D'||c=='E'||c=='F')

return '3';

if(c=='4'||c=='G'||c=='H'||c=='I')

return '4';

if(c=='5'||c=='J'||c=='K'||c=='L')

return '5';

if(c=='6'||c=='M'||c=='N'||c=='O')

return '6';

if(c=='7'||c=='P'||c=='R'||c=='S')

return '7';

if(c=='8'||c=='T'||c=='U'||c=='V')

return '8';

if(c=='9'||c=='W'||c=='X'||c=='Y')

return '9';

}

int main()

{

int count=1,j;

int i,k,t,len;

char v,c[100];

scanf("%d",&k);

for(j=0;j<k;j++)

{

scanf("%s",c);

t=0;

len=strlen(c);

for(i=0;i<len;i++)

{

if(c[i]=='-')

continue;

v=ch(c[i]);

t=t*10+(v-'0');

}

a[t]++;

}

for(i=0;i<N;i++)

if(a[i]>1)

{

printf("%03d-%04d %d\n",i/10000,i%10000,a[i]);

count=0;

}

if(count)

printf("No duplicates.\n");

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: