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:你不加排序怎么可能过?可怜我陪你一起写到这么晚。下面是我的,共参考。 Posted by:tengshengbo at 2005-08-08 01:11:22 > 这个程序是我刚写的,以前那个ac的找不到了。 > 我把字符串全变成数,又变回去。 > 我觉得直接字符串存储,把字符串排序可能更快。 > #include<cstdio> > #include<iostream> > #include<map> > #include<string> > using namespace std; > char tmp[100]; > int all[100005]; > int cmp(int *a,int *b) > { > return *a-*b; > } > int key[26] = {2,2,2,3,3,3,4,4,4, > 5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9,}; > int main() > { > > > int n; > scanf("%d",&n); > int i; > for(i=0;i<n;i++) all[i]=0; > for(int x=0;x<n;x++) > { > scanf("%s",&tmp); > int one=0; > int j=strlen(tmp); > for(i=0;i<j; i++) > { > if(tmp[i]<='9'&&tmp[i]>='0') > one=one*10+tmp[i]-'0'; > else > if(tmp[i]<'Z'&&tmp[i]>='A') > one=one*10+key[tmp[i]-'A']; > } > all[x]=one; > } > qsort(all,n,sizeof(all[0]),(int (*)(const void *,const void *))cmp); > int x=0; > i=0; > int j; > while(i<n-1) > { > j=i+1; > while((all[j]==all[i])&&(j<n)) j++; > if(j>i+1) > { > x=1; > //print(all[i],j-i); > int t=all[i]; > char p[9]; > p[0]=t/1000000+'0'; > t=t%1000000; > p[1]=(t/100000)+'0'; > t=t%100000; > p[2]=t/10000+'0'; > t=t%10000; > p[3]='-'; > p[4]=t/1000+'0'; > t=t%1000; > p[5]=t/100+'0'; > t=t%100; > p[6]=t/10+'0'; > t=t%10; > p[7]=t+'0'; > p[8]=0; > cout<<p; > cout<<" "<<j-i<<endl; > i=j; > } > else i++; > } > if(x==0) cout<<"No duplicates."<<endl; > > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator