题目描述
题目:输入一个字符串,打印出该字符串中字符的所有排列。
例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串
abc、acb、bac、bca、cab和cba。
输入
输入:
abc
输出
输出:
abc acb bac bca cab cba
样例输入
abc
样例输出
abc acb bac bca cab cba
参考代码
#include <stdio.h>
#include <string.h>
#define max 100
int used[max],n,k;
char res[max],c[max];
void output()
{
int i;
for (i=1;i<=n;i++)
printf("%c",res[i]);
printf(" ");
}
void permutation(int no)
{
int i;
if(no>n)
output(); else
for (i=1;i<=n;i++)
if(!used[i])
{
res[no]=c[i-1];
used[i]=1;
permutation(no+1);
used[i]=0;
}
}
int main()
{
int i;
k=1;
gets(c);
n=strlen(c);
for (i=1;i<=n;i++)
used[i]=0;
permutation(1);
printf("n");
return 0;
}
解析
暂无