例如,输入aabc,按字典顺序输出:aabcaacbabacabcaacabacbabaacbacabcaacaabcabacbaa偶的代码如下:#include <stdio.h>int main(){ long nt,n1,n2,nLen; char cIn[100],ct; long nNum[100]={0}; scanf("%s",cIn); //输入字符串 { char *pc=cIn,*pc2; for(;*pc;pc++)for(pc2=pc+1;*pc2;pc2++)//排序,按ASCII if(*pc>*pc2)ct=*pc,*pc=*pc2,*pc2=ct; nLen=pc-cIn; while(nNum[nLen]==0) { char cT[100],cOut[100]={0},*pcOut=cOut; for(n1=0;n1<=nLen;n1++)cT[n1]=cIn[n1]; //取数初始化 for(n1=0;n1<nLen;n1++) { n2=nNum[nLen-n1-1]; //按排列数取数 if(n2>0 && cT[n2]==cT[n2-1])break; //防重复 *pcOut++=cT[n2]; for(nt=n2;nt<nLen;nt++)cT[nt]=cT[nt+1]; //删除已取元素 } if(n1==nLen)printf("%s\n",cOut); //输出 long *pn=nNum+1; for((*pn)++,n1=1;n1<nLen;n1++) //不等进制数加一并处理进位 if(*pn>n1)*pn++=0,(*pn)++;else break; } } return 0;}

评论