#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;
}
按字典序输出数组内元素的全排列
最新推荐文章于 2024-02-06 14:24:22 发布