| ||||||||||
| 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:小弟总是WA啊,希望各位路过的大侠帮忙看下代码,注释比较详细的,谢谢了,出门靠朋友嘛In Reply To:小弟总是WA啊,希望各位路过的大侠帮忙看下代码,注释比较详细的,谢谢了,出门靠朋友嘛 Posted by:OUmaster at 2007-02-27 00:42:47 > #include <stdio.h>
> #include <stdlib.h>
>
> int map(char ch)
> {
> if(ch=='0')
> return 0;
> else if(ch=='1')
> return 1;
> else if(ch=='A' || ch=='B' || ch=='C' || ch=='2')
> return 2;
> else if(ch=='D' || ch=='E' || ch=='F' || ch=='3')
> return 3;
> else if(ch=='G' || ch=='H' || ch=='I' || ch=='4')
> return 4;
> else if(ch=='J' || ch=='K' || ch=='L' || ch=='5')
> return 5;
> else if(ch=='M' || ch=='N' || ch=='O' || ch=='6')
> return 6;
> else if(ch=='P' || ch=='R' || ch=='S' || ch=='7')
> return 7;
> else if(ch=='T' || ch=='U' || ch=='V' || ch=='8')
> return 8;
> else if(ch=='W' || ch=='X' || ch=='Y' || ch=='9')
> return 9;
> else return -1;
> }
>
> int convert(char s[100]){//把输入字符串转换为数字
> int i=0;
> int number=0,k=1000000;
>
> while(s[i]!='\0'){
> if(map(s[i])!=-1){number+=k*map(s[i]);k/=10;}
> ++i;
>
> }
> return number;
> }
>
> int partition(int *L,int low,int high)
> {
> int key;
> L[0]=L[low];
> key=L[low];
> while(low<high){
> while(low<high && L[high]>=key)--high;
> L[low]=L[high];
> while(low<high && L[low]<=key)++low;
> L[high]=L[low];
> }
> L[low]=L[0];
> return low;
> }
>
> void Qsort(int *L,int low,int high)//快速排序
> {
> int loc;
> if(low<high){
> loc=partition(L,low,high);
> Qsort(L,low,loc-1);
> Qsort(L,loc+1,high);
> }
> }
>
> main()
> {
> char ss[100],gg[8];
> int *cc,n,i,j,k=0,num=1;
> scanf("%d",&n);
> cc=(int *)malloc((n+1)*sizeof(int));
> for(i=0;i<=n;++i)
> cc[i]=0;
> for(i=1;i<=n;++i){
> scanf("%s",ss);
> cc[i]=convert(ss);
> }
> Qsort(cc,1,n);//排好顺序
> printf("\n");
> for(i=1;i<=n;++i){//输出
> if(cc[i]==cc[i+1])num++;
> if(num>1 && cc[i]!=cc[i+1])
> {
> itoa(cc[i],gg,10);//把数字换为字符
> if(cc[i]/1000000!=0){
> for(j=0;j<3;++j)
> printf("%c",gg[j]);
> printf("-");
> for(j=3;j<=6;++j)
> printf("%c",gg[j]);
> printf(" %d\n",num);
> }
> else {//首位为0的情况
> printf("0");
> for(j=0;j<2;++j)
> printf("%c",gg[j]);
> printf("-");
> for(j=2;j<6;++j)
> printf("%c",gg[j]);
> printf(" %d\n",num);
> }
> num=1;
> if(k==0)k=1;
> }
> }
> if(k==0)printf("No duplicates");
>
> getch();
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator