題目: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