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 了n次,不知错在哪,求大家指点,万分感激#include<iostream> using namespace std; struct dot { long data; dot *n; }; int num; long *q; char (*p)[7]; char tt; class poj1002 { int s;int t;int count;dot *ps;dot *pss;dot* tps;dot* tpss;//num表示输入多少个号码,q指向转换后的数组,count用来记重复多少次,ps用来指重复的数;pss用来指重复的次数 public: poj1002() { count=1; ps=new dot; pss=new dot; tps=ps; tpss=pss; } void input() { //scanf("%d",&num); p=new char [num+1][7]; q=new long[num]; for(int j=1;j<=num;j++) { for(int k=0;k<7;k++) { do { p[j][k]=getchar(); }while(p[j][k]=='-'||p[j][k]=='\n'); switch(p[j][k]) { case 'A': case 'B': case 'C':p[j][k]='2';break; case 'D': case 'E': case 'F':p[j][k]='3';break; case 'G': case 'H': case 'I':p[j][k]='4';break; case 'J': case 'K': case 'L':p[j][k]='5';break; case 'M': case 'N': case 'O':p[j][k]='6';break; case 'P': case 'R': case 'S':p[j][k]='7';break; case 'T': case 'U': case 'V':p[j][k]='8';break; case 'W': case 'X': case 'Y':p[j][k]='9';break; } } } } void change() { for(int i=1;i<=num;i++) {//cout<<p[i][0]<<' '<<p[i][1]<<' '<<p[i][2]<<' '<<p[i][3]<<' '<<p[i][4]<<' '<<p[i][5]<<' '<<p[i][6]<<'*'; q[i]=(p[i][0]-48)*1000000+(p[i][1]-48)*100000+(p[i][2]-48)*10000+(p[i][3]-48)*1000+(p[i][4]-48)*100+(p[i][5]-48)*10+(p[i][6]-48); } } int partition(int s,int t) { int l=s;int r=t; q[0]=q[s]; int x=q[s]; while(r>l) { while(q[r]>=x&&r>l) r--; q[l]=q[r]; while(q[l]<=x&&l<r) l++; q[r]=q[l]; } q[l]=q[0]; return l; } void quicksort(int s,int t) { if(s<t) { int k=partition(s,t); quicksort(s,k-1); quicksort(k+1,t); } } void duplicate() { int i=1; while(i<=num-1) { if(q[i]==q[i+1]) { while(i+count<=num&&q[i]==q[i+count]) { count++; } dot* a=new dot; a->data=q[i]; tps->n=a; tps=a; dot* b=new dot; b->data=count; tpss->n=b; tpss=b; i=i+count-1; count=1; } i++; } tps->n=NULL; tpss->n=NULL; } void print() { if(tps!=ps) { tps=ps->n; tpss=pss->n; while(tps!=NULL) { if(tps->data/10000>=100) {printf("%d",(tps->data/10000));printf("-");} else if(tps->data/10000>=10&&tps->data/10000<100) {printf("0");printf("%d",(tps->data/10000));printf("-");} else {printf("00");printf("%d",(tps->data/10000));printf("-");} if(tps->data%10000>=1000) {printf("%d",tps->data%10000);printf(" ");printf("%d\n",tpss->data);} else if(tps->data%10000>=100&&tps->data%10000<1000) {printf("0");printf("%d",tps->data%10000);printf(" ");printf("%d\n",tpss->data);} else if(tps->data%10000>=10&&tps->data%10000<100) {printf("00");printf("%d",tps->data%10000);printf(" ");printf("%d\n",tpss->data);} else {printf("000");printf("%d",tps->data%10000);printf(" ");printf("%d\n",tpss->data);} tps=tps->n; tpss=tpss->n; } } else printf("No duplicates.\n"); } }; int main() { while(scanf("%d",&num)!=EOF) { poj1002 p1; p1.input(); p1.change(); p1.quicksort(1,num); //for(int i=1;i<=num;i++) //cout<<q[i]<<" "; p1.duplicate(); p1.print(); delete []p; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator