码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 1002

时间:2016-03-29 00:54:59      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

 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

标签:

原文地址:http://www.cnblogs.com/Tree-dream/p/5331324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!