#include<stdio.h>
void premutation(int pos,int n);
char c[100];
char used[200];
char pre[100];
int main()
{
int n;
scanf("%d",&n);
getchar();
gets(c);
premutation(0,n);
return 0;
}
void premutation(int pos,int n)
{
if(pos == n)
{
for(int i=0;i<n;i++)
printf("%c ",pre[i]);
printf("\n");
return ;
}
for(int i=0;i<n;i++)
{
if(used[i]==0)
{
pre[pos]=c[i];
used[i]=1;
premutation(pos+1,n);
used[i]=0;
}
}
return ;
}
#include<stdio.h> //全排列去重
#include<string.h>
void premutation(int pos,int n);
char c[100];
int used[200];
char pre[100];
int main()
{
int n;
scanf("%d",&n);
getchar();
gets(c);
for(int i=0;i<strlen(c);++i)
used[c[i]]++; //统计相同字符的个数
premutation(0,n);
return 0;
}
void premutation(int pos,int n)
{
if(pos == n)
{
for(int i=0;i<=n;i++)
printf("%c ",pre[i]); //输出全排列后的
printf("\n");
return ;
}
for(int i=65;i<=122;i++)
{
if(used[i]>0)
{
pre[pos]=i;
used[i]--;
premutation(pos+1,n);
used[i]++;
}
}
return ;
}
7600

被折叠的 条评论
为什么被折叠?



