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:所有的测试数据都对,为什么还wrong answer 呢?In Reply To:所有的测试数据都对,为什么还wrong answer 呢? Posted by:123456789987654321 at 2008-09-29 11:00:21 > #include<iostream> > using namespace std; > int an[20]; > char str[20],b[20]; > int compare(const void *e1,const void *e2) > { > return *((int*)e1)-*((int*)e2); > } > void sort(char * a,char * b,int len) > { > int i,j,k=1; > int x[26],y[26]; > memset(x,0,sizeof(x)); > memset(y,0,sizeof(y)); > > for(i=0;i<len;i++) > { > if(a[i]>='A'&&a[i]<='Z') > x[a[i]-65]++; > if(a[i]>='a'&&a[i]<='z') > y[a[i]-97]++; > } > for(i=0;i<26;i++) > { > if(x[i]!=0) > { > for(j=1;j<=x[i];j++) > b[k++]=char(i+65); > } > if(y[i]!=0) > { > for(j=1;j<=y[i];j++) > b[k++]=char(i+97); > } > } > b[k]='\0'; > } > > int main() > { > freopen("in.txt","r",stdin); > int len,i,j,k,m,n; > > scanf("%d",&m); > while(m--) > { > cin>>str; > len=strlen(str); > n=len; > sort(str,b,len); > > //an[0]=100; > an[1]=1; > for(i=2;i<=len;i++)//映射成数字 > { > if(b[i]!=b[i-1]) > an[i]=an[i-1]+1; > else > an[i]=an[i-1]; > } > > for(i=1;i<=len;i++) //输出第一个排列 > cout<<b[i]; > cout<<endl; > > for(i=2;i<len;i++) //将b中重复的去掉 > { > if(b[i]==b[i-1]) > { > for(j=i;j<len;j++) > b[j]=b[j+1]; > } > } > > for(i=0;;i++) //每次循环都找出下一个排列 > { > for(j=n;j>=2&&an[j-1]>=an[j];j--); > if(j>=2) > { > int nMinLarger=an[j]; > int nMinIdx=j; > //下面找出从an[j]及其后最小的比an[j-1]大的元素,并记录其下标 > for(int kk=j;kk<=len;kk++) > if(nMinLarger>an[kk]&&an[kk]>an[j-1]) > { > nMinLarger=an[kk]; > nMinIdx=kk; > } > //交换位置 > an[nMinIdx]=an[j-1]; > an[j-1]=nMinLarger; > qsort(an+j,n-j+1,sizeof(int),compare); > > for(k=1;k<=n;k++) > printf("%c",b[an[k]]); > cout<<endl; > } > else > break; > } > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator