POJ1002_487-3279_C++

  题目:http://poj.org/problem?id=1002html

  我知道大家最须要的是这个 [ 手动滑稽 ]数组

  

  STD 给出的方法是丢进一个数组,而后排序,相邻的是重复的spa

  这个方法,时间复杂度很不错,也确实很好,可是最快的写法是.net

  直接丢进对应的数组统计,而后 for 一遍数组看是否大于 1code

  注意没有满 7 位的时候要输出前导零htm

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cstring>
 4 using namespace std;
 5 
 6 char a[255],s[200],w[10];
 7 int b[10000000];
 8 int main()
 9 {
10     int i,j,n,len,x;
11     bool flag=1;
12     scanf("%d\n",&n);
13     a['A']=a['B']=a['C']='2';
14     a['D']=a['E']=a['F']='3';
15     a['G']=a['H']=a['I']='4';
16     a['J']=a['K']=a['L']='5';
17     a['M']=a['N']=a['O']='6';
18     a['P']=a['R']=a['S']='7';
19     a['T']=a['U']=a['V']='8';
20     a['W']=a['X']=a['Y']='9';
21     for (i=1;i<=n;i++)
22     {
23         scanf("%s",s);
24         len=strlen(s);
25         x=0;
26         for (j=0;j<len;j++)
27         {
28             if (s[j]>='A'&&s[j]<='Z') s[j]=a[s[j]];
29             if (s[j]>='0'&&s[j]<='9') x=x*10+s[j]-'0';
30         }
31         b[x]++;
32     }
33     for (i=0;i<10000000;i++)
34         if (b[i]>1)
35         {
36             for (x=i,j=1;j<=7;j++)
37             {
38                 w[j]=x%10+'0';
39                 x/=10;
40             }
41             for (;j;j--) putchar(j>5?w[j-1]:j<5?w[j]:'-');
42             printf(" %d\n",b[i]);
43             flag=0;
44         }
45     if (flag) printf("No duplicates.\n");
46     return 0;
47 }

  见到的好博客,能够看出真的是用心写了blog

  http://blog.csdn.net/thebestdavid/article/details/10986813排序

 

 

 

版权全部,转载请联系做者,违者必究get

联系方式:http://www.cnblogs.com/hadilo/p/5932395.html博客

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息