POJ 1002
Posted 一个_小菜鸟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 1002相关的知识,希望对你有一定的参考价值。
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 struct In{ 5 int a; 6 int num[10]; 7 }pu_1[100050]; 8 9 int cmp(const void*c,const void*d) 10 { 11 return (*(In *)c).a-(*(In *)d).a; 12 } 13 14 15 16 char str_1[100050][300]={0}; 17 int pu_2[100050][2]={0}; 18 int main() 19 { 20 int i,j,m,n,flog,k; 21 scanf("%d",&m); 22 for(i=0;i<m;i++) 23 scanf("%s",str_1[i]); 24 for(i=0;i<m;i++) 25 for(j=0,n=1000000,k=1,pu_1[i].a=0;j<strlen(str_1[i]);j++) 26 { 27 if(str_1[i][j]<=‘9‘&&str_1[i][j]>=‘0‘) 28 { 29 pu_1[i].a+=(str_1[i][j]-‘0‘)*n; 30 n/=10; 31 pu_1[i].num[k]=str_1[i][j]-‘0‘; 32 k++; 33 } 34 if(str_1[i][j]<=‘P‘&&str_1[i][j]>=‘A‘) 35 { 36 pu_1[i].a+=((str_1[i][j]-‘A‘)/3+2)*n; 37 n/=10; 38 pu_1[i].num[k]=(str_1[i][j]-‘A‘)/3+2; 39 k++; 40 } 41 if(str_1[i][j]>‘Q‘&&str_1[i][j]<=‘Y‘) 42 { 43 pu_1[i].a+=(((str_1[i][j])-‘Q‘)/3+7)*n; 44 n/=10; 45 pu_1[i].num[k]=(str_1[i][j]-‘Q‘)/3+7; 46 k++; 47 } 48 } 49 qsort(pu_1,m,sizeof(pu_1[0]),cmp); 50 for(i=0,j=0;i<m;i++) 51 { 52 if(i==0) pu_2[j][0]=pu_1[i].a; 53 else{ 54 if(pu_1[i].a==pu_2[j][0]) pu_2[j][1]++; 55 else { 56 j++; 57 pu_2[j][0]=pu_1[i].a; 58 } 59 } 60 } 61 for(i=0,j=0,flog=0;i<m;i++) 62 { 63 if(pu_2[j][1]!=0&&pu_1[i].a==pu_2[j][0]) 64 { 65 printf("%d%d%d-%d%d%d%d",pu_1[i].num[1],pu_1[i].num[2],pu_1[i].num[3],pu_1[i].num[4],pu_1[i].num[5],pu_1[i].num[6],pu_1[i].num[7]); 66 printf(" %d\n",pu_2[j][1]+1); 67 flog++; 68 j++; 69 } 70 if(pu_2[j][1]==0) j++; 71 } 72 if(flog==0) printf("No duplicates.\n"); 73 return 0; 74 }
利用一个结构体,一个存号码的数字和,一个存它的每一位数,考虑0开头的号码
然后再利用结构体进行排序
并进行输出
以上是关于POJ 1002的主要内容,如果未能解决你的问题,请参考以下文章