给定几个字母或数,输出所有可能的排列 如 char a[3]={a,b,c},生成的排列的个数是n!个,如下:
a, b,c
a, c, b
b, a, c
b ,c ,a
c, a, b
c ,b ,a
如上面输的排列所示,我们可以看成是以一个字母开头然后是剩下字母的任意排列。因此我们可以用递归调用实现
# include <iostream>
using namespace std;
void swap(char *a,char *b)
{
char *temp;
temp=a;
a=b;
b=temp;
}
void pertation(char *a,int k,int m)
{
if(k==m)
{
for(int i=0;i<=m;i++)
cout<<a[i]<<" ";
cout<<endl;
}
else
{
for(int i=k;i<=m;i++)
{
swap(a[i],a[k]);
pertation(a,k+1, m);
swap(a[i],a[k]);
}
}
}
int main()
{
char a[3]={'a','b','c'};
pertation(a,0,2);
return 0;
}