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 |
大虾们帮小弟看看我的代码吧~~ 莫名其妙的总是WA啊~~ 寒心~~(附代码及其说明)#include <iostream> using namespace std; long int fix(char a[]); //输入标准化的号码 void output(long int n); //输出号码 void sort(long int a[],long int f,long int t); //快速排序 int main() { long int i,k,count,flag=0;char temp[30]; long int a[100001],*p,*q; cin>> k; for(i=0;i<k;i++) { cin>>temp; a[i]=fix(temp); } a[i]=-1; //电话号码簿结束标志 sort(a,0,k-1); p=a;q=a;flag=0; while(*p!=-1) //输出电话号码簿 { count=0; while(*p==*q) { q++;count++; } if(count>1) {output(*p);cout<<' '<<count<<endl;flag=1;} p=q; } if(flag==0)cout<<"No duplicates."; return 1; } long int fix(char a[]) { char *p;long int flag,sum; p=a;sum=0; while(*p!='\0') { flag=0; switch(*p) { case 'A':case'B':case'C': *p=2;flag=1;break; case 'D':case'E':case'F': *p=3;flag=1;break; case 'G':case'H':case'I': *p=4;flag=1;break; case 'J':case'K':case'L': *p=5;flag=1;break; case 'M':case'N':case'O': *p=6;flag=1;break; case 'P':case'R':case'S': *p=7;flag=1;break; case 'T':case'U':case'V': *p=8;flag=1;break; case 'W':case'X':case'Y': *p=9;flag=1;break; case '0':case '1':case '2':case '3':case '4': case '5':case '6':case '7':case '8':case '9': *p-='0';flag=1;break; } if(flag==1)sum=sum*10+*p; p++; } return sum; } void output(long int n) //标准输出电话号码 解决了首位为零的问题 { long int j,k,t; j=1000000; for(k=1;k<8;k++) { t=(n/j)%10; cout<<t; if(k==3)cout<<'-'; j/=10; } } void sort(long int a[],long int f,long int t) //快速排序应该不会有什么问题吧?? { long int i,j,k,p; if(t-f>1) { k=a[f];i=f;j=t;p=-1; while(j>i) if(p==1) { while(j>i&&a[i]<=k) i++; a[j]=a[i]; p=-1; } else { while(j>i&&a[j]>=k) j--; a[i]=a[j]; p=1; } a[i]=k; sort(a,f,i-1); sort(a,i+1,t); } } 麻烦各位大虾帮帮忙看看到底出了什么问题,或者谁有比较好的测试数据留下也好,小弟多谢了~~~~ Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator