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:sunmoonstar_love at 2005-08-08 00:47:36 这个程序是我刚写的,以前那个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