不敗的獵人 不敗的獵人
关注数: 30 粉丝数: 37 发帖数: 1,377 关注贴吧数: 42
求大神帮我看下PKU 1002题 #include "stdio.h" #include "string.h" #include "math.h" int partition(long int a[],int p,int r) { int x,i,j,t; x=a[r]; i=p-1; for(j=p;j<=r-1;j++) { if (a[j]<=x) {i++; t=a[i];a[i]=a[j];a[j]=t;} } t=a[i+1];a[i+1]=a[r];a[r]=t; return i+1; } void quicksort(long int a[],int p,int r) { int q; if (p<r) { q =partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q+1,r); } } //快排算法 int main() { int n,i,j,k,m,lens,count,flag; long int temp; int tflag; int a[7]={0}; char sr[20]={0}; long int s[100000]={0}; scanf("%d",&n); for(i=0;i<n;i++) {scanf("%s",sr); lens=strlen(sr); k=0; for(j=0;j<lens;j++) { if(k>=7)break; else switch (sr[j]) { case '0':a[k]=0;k++;break; case '1':a[k]=1;k++;break; case 'A': case 'B': case 'C': case '2':a[k]=2;k++;break; case 'D': case 'E': case 'F': case '3':a[k]=3;k++;break; case 'G': case 'H': case 'I': case '4':a[k]=4;k++;break; case 'J': case 'K': case 'L': case '5':a[k]=5;k++;break; case 'M': case 'N': case 'O': case '6':a[k]=6;k++;break; case 'P': case 'R': case 'S': case '7':a[k]=7;k++;break; case 'T': case 'U': case 'V': case '8':a[k]=8;k++;break; case 'W': case 'X': case 'Y': case '9':a[k]=9;k++;break; default:break; }} s[i]=a[0]*1000000+a[1]*100000+a[2]*10000+a[3]*1000+a[4]*100+a[5]*10+a[6]; } //数据输入 quicksort(s,0,n-1); tflag=0; for(i=0;i<n;i++) { count=1; for(k=i+1;k<=n;k++) { flag=1; if(s[k]!=s[i]) {count=k-i;flag=0;break;//计数 if(flag==1) tflag=1; } if (tflag==0) {printf("No duplicates.");break;} else if(count>1) {printf("%d%d%d-%d%d%d%d %d\n",s[i]/1000000,s[i]%1000000/100000,s[i]%100000/10000,s[i]%10000/1000,s[i]%1000/100,s[i]%100/10,s[i]%10,count); i+=count-1;} } return 0; }
1 下一页