Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
换别的排序方法试试In Reply To:请问怎么才能让这个程序时间再缩短阿????!!!!!已经用了快速排序,还是TLE!!!谢谢了 Posted by:1234_ at 2007-03-17 20:31:06 > #include<iostream.h> > #include <stdlib.h> > #include<cstring> > struct state > { > char digit[15]; > int num; > }; > int main() > { > void change(char *a); > int mycompare(const void *elem1,const void *elem2); > int n; > cin>>n; > cin.ignore(); > state *number=new state[n]; > int i,j,count=0; > char tmp[20]; > for(i=0;i<n;i++) > { > number[i].digit[0]='\0'; > number[i].num=0; > } > for(i=0;i<n;i++) > { > cin.getline(tmp,20); > change(tmp); > for(j=0;j<count;j++) > { > if(strcmp(tmp,number[j].digit)==0) > { > number[j].num++; > break; > } > } > if(j==count) > { > strcpy(number[count].digit,tmp); > number[count].num++; > count++; > } > } > qsort(number,n,sizeof(state),mycompare); > for(i=0;i<n;i++) > { > if(number[i].num>1) > { > cout<<number[i].digit<<' '<<number[i].num<<endl; > } > } > delete []number; > return 0; > } > void change(char *a) > { > int i,j=0; > char tmp[9]; > for(i=0;i<strlen(a);i++) > { > if(a[i]>='0'&&a[i]<='9') > { > tmp[j]=a[i]; > j++; > } > else if(a[i]>='A'&&a[i]<='C') > { > tmp[j]='2'; > j++; > } > else if(a[i]>='D'&&a[i]<='F') > { > tmp[j]='3'; > j++; > } > else if(a[i]>='G'&&a[i]<='I') > { > tmp[j]='4'; > j++; > } > else if(a[i]>='J'&&a[i]<='L') > { > tmp[j]='5'; > j++; > } > else if(a[i]>='M'&&a[i]<='O') > { > tmp[j]='6'; > j++; > } > else if(a[i]>='P'&&a[i]<='S'&&a[i]!='Q') > { > tmp[j]='7'; > j++; > } > else if(a[i]>='T'&&a[i]<='V') > { > tmp[j]='8'; > j++; > } > else if(a[i]>='W'&&a[i]<='Y') > { > tmp[j]='9'; > j++; > } > } > tmp[7]=tmp[6]; > tmp[6]=tmp[5]; > tmp[5]=tmp[4]; > tmp[4]=tmp[3]; > tmp[3]='-'; > tmp[8]='\0'; > strcpy(a,tmp); > } > int mycompare(const void *elem1,const void *elem2) > { > state *p1,*p2; > p1=(state *)elem1; > p2=(state *)elem2; > return (strcmp(p1->digit,p2->digit)); > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator