按字典序输出数组内元素的全排列

来源:互联网 发布:网络数字矩阵 编辑:程序博客网 时间: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;}

原创粉丝点击