数据量较大 卡了好几次超时 看了别人的报告 说是可以把电话号码转成整数,大概就是这么做的。
1 #include2 #include 3 #include 4 using namespace std; 5 const int maxn=200000; 6 char s[500]; 7 char key[26]={ '2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','0','7','7','8','8','8','9','9','9','0'}; 8 int number[maxn]; 9 int main()10 {11 int n;12 scanf("%d",&n);13 getchar();14 for(int i=0;i ='A'&&s[j]<='Z')23 tmp=tmp*10+(key[s[j]-'A']-'0');24 else if(s[j]>='0'&&s[j]<='9')25 tmp=tmp*10+(s[j]-'0');26 number[i]=tmp;27 }28 sort(number,number+n);29 int flag=0;30 int i=0;31 do32 {33 int index=i;34 while(i 1)36 {37 flag=1;38 printf("%03d-%04d %d\n",number[index]/10000,number[index]%10000,i-index);39 }40 }while(i