| ||||||||||
| 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 | |||||||||
Re:不要用字符来比较....一读入就转成long保存....可以试试用hash来记录,再选其中大于2的出来排序In Reply To:天啊!怎么还超时!折腾了不是多长时间了!谁来看看,帮帮忙! Posted by:00 at 2005-03-24 23:12:53 > #include<stdio.h>
> #include<string.h>
> #include<stdlib.h>
> int sort(const void *,const void *);
> char tel[100000][16],Tel[100000][16];
> long *time,*c;
> long t,i,j,k,l,z=0;
> void main()
> {
> scanf("%d",&t);
> time=new long[t];
> c=new long[t];
> for(i=0;i<t;i++)
> {
> scanf("%s",tel[i]);
> c[i]=0;
> for(j=0;j<(int)strlen(tel[i]);j++)
> {
> if(tel[i][j]<81&&tel[i][j]>64)
> tel[i][j]=char(int((tel[i][j]-'A'+1)/3.1)+50);
> if(tel[i][j]>81)
> tel[i][j]=char(int((tel[i][j]-'A')/3.1)+50);
> }
> l=0;
> for(k=0;l<8;k++)
> {
> if(l==3)
> {
> Tel[i][l]='-';
> l++;
> k--;
> continue;
> }
> if(tel[i][k]!='-')
> {
> Tel[i][l]=tel[i][k];
> l++;
> }
> }
> }
> qsort(Tel,t,sizeof(Tel[0]),sort);
> for(i=0;i<t;i++)
> {
> for(k=0;k<t;k++)
> {
> if(!strcmp(Tel[i],Tel[k]))
> c[i]++;
> }
> for(j=0;j<i;j++)
> {
> if(!strcmp(Tel[j],Tel[i]))
> goto loop;
> }
> if(c[i]>1)
> {
> z++;
> printf("%s %d\n",Tel[i],c[i]);
> }
> loop: i++;
> i--;
> }
> if(!z)
> printf("%s\n","No duplicates.");
> delete [] time;
> delete [] c;
> }
> int sort(const void *a, const void *b)
> {
> return (strcmp((char*)a,(char*)b));
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator