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 |
要不一起去找Nash?嘿嘿。看看我的吧,我的倒是没错,可是一直TLE。咱俩互相看看哈。In Reply To:小弟总是WA啊,希望各位路过的大侠帮忙看下代码,注释比较详细的,谢谢了,出门靠朋友嘛 Posted by:OUmaster at 2007-02-27 00:42:47 //------------1002 487-3279 #include<stdio.h> #include<string.h> void QuickSort(int used[][2],int p,int r) { int x,i,j,temp,q; if (p<r) { x=used[r][0]; i=p-1; for (j=p;j<=r-1;j++) if (used[j][0]<=x) { i++; temp=used[i][0]; used[i][0]=used[j][0]; used[j][0]=temp; temp=used[i][1]; used[i][1]=used[j][1]; used[j][1]=temp; } temp=used[i+1][0]; used[i+1][0]=used[r][0]; used[r][0]=temp; temp=used[i+1][1]; used[i+1][1]=used[r][1]; used[r][1]=temp; q=i+1; QuickSort(used,p,q-1); QuickSort(used,q+1,r); } } int main(void) { int n; int used[100001][2]; int total,i,j,k,number,l,count,newNum,multiply,numZero,start,duplicates; char read[100],out[100]; scanf("%d",&n); total=0; for (i=1;i<=n;i++) { used[i][0]=0; used[i][1]=0; } for (i=1;i<=n;i++) { scanf("%s",read); l=strlen(read); number=0; k=1000000; multiply=0; count=7; // count digits. numZero=0; for (j=0;j<=l-1;j++) { if (read[j]=='0' && start==0) numZero++; else start=1; if (read[j]=='-') continue; if ('0'<=read[j] && read[j]<='9') multiply=read[j]-'0'; else { if ('A'<=read[j] && read[j]<='O') multiply=2+(read[j]-'A')/3; else { if (read[j]=='P' || read[j]=='R' || read[j]=='S') multiply=7; else { if (read[j]=='T' || read[j]=='U' || read[j]=='V') multiply=8; else { if (read[j]=='W' || read[j]=='X' || read[j]=='Y') multiply=9; } } } } number+=multiply*k; k/=10; } newNum=1; for (j=1;j<=total;j++) if (used[j][0]==number) { used[j][1]++; newNum=0; break; } if (newNum==1) { total++; used[total][0]=number; used[total][1]++; } } QuickSort(used,1,total); duplicates=0; for (i=1;i<=total;i++) if (used[i][1]>1) { itoa(used[i][0],out,10); l=strlen(out); for (j=l-1;j>=0;j--) out[j+7-l]=out[j]; for (j=0;j<=6-l;j++) out[j]='0'; for (j=0;j<=2;j++) printf("%c",out[j]); printf("-"); for (j=3;j<=6;j++) printf("%c",out[j]); printf(" %d\n",used[i][1]); duplicates=1; } if (duplicates==0) printf("No duplicates.\n"); } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator