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博客

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息