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我这个代码自认比网上绝大多数拿出来乱显的代码要精巧、要高效。 我和我的朋友拿了无数组数据测都没有问题,就是这PKU老说WA,我们都无奈了,大家帮看看(不客气的说:让很多学了点皮毛就自认很NB的人学习学习)。 基本思路: 1。读入,转换(乱显的人好好看看) 2。排序,出来(借鉴自STL中的upper_bound和lower_bound算法思路) 3。输出 #include <iostream> #include <stdlib.h> #include <string.h> using namespace std; struct Item{ char number[8]; int count; }num[100000]; const char map[8]={'A','D','G','J','M','P','T','W'}; int Ocount(0),chong[50000]; inline int compare(const void *a,const void *b) { return strcmp((*(Item*)a).number,(*(Item*)b).number); } char translate(char c) { int i; for(i=1;i<8;i++)//it's impossible to break when i=0; if(c<map[i]) break; return(i+1+'0'); } void readin() { char c; char *buf=num[Ocount++].number; int count(0); c=cin.get(); while(c!='\n') { if(count<7) if(c>='0'&&c<='9') buf[count++]=c; else if(c>='A'&&c<='Z') buf[count++]=translate(c); c=cin.get(); } buf[7]='\0'; // cout<<"test:"<<buf<<endl; } int main(){ int n,i,*p=chong; cin>>n; cin.get(); for(i=0;i<n;i++) readin(); qsort((void *)num,n,sizeof(num[0]),compare); // cout<<"\nsorted"<<endl; // for(i=0;i<n;i++) // cout<<i<<ends<<num[i].number<<endl; // cout<<"chong="<<chong<<endl; bool bchong(false); for(i=n-1;i>=0;i--) { if(i && !strcmp(num[i].number,num[i-1].number)) { num[i-1].count=num[i].count+1; bchong=true; // cout<<i-1<<" same to "<<i<<endl; } else if(bchong) { bchong=false; *p=i; // cout<<"recorded: p="<<p<<" num="<<num[*p].number<<" count="<<num[*p].count<<endl; p++; } } if(p==chong) cout<<"No duplicates.\n"; else while((--p)>=chong) { int j; for(j=0;j<3;j++) cout<<num[*p].number[j]; cout<<"-"; for(;j<7;j++) cout<<num[*p].number[j]; cout<<ends<<num[*p].count+1<<endl; } return 0; } 大家有兴趣可以把注释掉的部分加上测试。 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator