| ||||||||||
| 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:除排序外和C0400004079写的一样,为什么wrong answer?救命啊!!!!!In Reply To:除排序外和C0400004079写的一样,为什么wrong answer?救命啊!!!!! Posted by:glaver at 2004-04-03 23:13:28 > #include <stdio.h>
> #include <stdlib.h>
>
> main()
> {
> long count;
> long i,j,k,ir,first;
> long num[100002];
> char tmp[200];
> scanf("%ld",&count);
> for(i=1;i<=count;i++)
> {
> scanf("%s",tmp);
> for(j=0,k=0;tmp[j]!='\0';j++,k++)
> {
> if(tmp[j]>='A'&&tmp[j]<='P') tmp[j]=(char)((tmp[j]-'A')/3)+'2';
> if(tmp[j]>='R'&&tmp[j]<='Y') tmp[j]=(char)((tmp[j]-'Q')/3)+'7';
> tmp[k]=tmp[j];
> if(tmp[k]=='-') k--;
> }
> tmp[k]='.';
> num[i]=atol(tmp);
> }
>
> k=count/2+1; //堆排序
> ir=count;
> while(1)
> {
> if(k>1) k--,first=num[k];
> else {
> first=num[ir];
> num[ir]=num[1];
> ir--;
> if(ir<=1) break;
> }
> i=k;
> j=k+k;
> while(j<=ir)
> {
> if(j<ir&&num[j]<num[j+1]) j++;
> if(first<num[j])
> {
> num[i]=num[j];
> i=j;
> j=j+j;
> }
> else j=ir+1;
> }
> num[i]=first;
> }
> num[1]=first;
>
>
> ir=0; //输出
> for(i=1,j=1;i<count;i++)
> {
> if(num[i]==num[i+1]) j++;
> if(num[i]!=num[i+1]||i==count-1)
> {
> if(j>1){
> sprintf(tmp,"%07ld",num[i-1]);
> for(k=0;k<7;k++)
> {
> if(k==3) printf("-");
> printf("%c",tmp[k]);
> }
> printf(" %ld",j);
> printf("\n");
> j=1;
> ir=1;
> }
> }
> }
>
> if(ir==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