按字典序输出数组内元素的全排列
来源:互联网 发布:网络数字矩阵 编辑:程序博客网 时间:2024/05/16 17:44
#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>using namespace std;bool cmp(char a,char b){ return a<b;}void print_permutation(int n,char *A,char *P,int cur){ int i,j; if(cur==n) { for(i=0;i<n;i++) printf("%c",A[i]); printf("\n"); } else for(i=0;i<n;i++) if(!i||P[i]!=P[i-1]) { int c1=0,c2=0; for(j=0;j<cur;j++) if(A[j]==P[i]) c1++; for(j=0;j<n;j++) if(P[i]==P[j]) c2++; if(c1<c2) { A[cur]=P[i]; print_permutation(n,A,P,cur+1); } }}int main(){ char a[10],b[10]; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); printf("请输入数据:"); while(scanf("%s",b)!=EOF) { int n=strlen(b); a[0]=NULL; sort(b,b+n,cmp); printf("输出:\n"); print_permutation(n,a,b,0); printf("请输入数据:"); } return 0;}