R={r1,r2,r3,...,rn};Perm(R)表示R的全排列
全排列问题,R的全排列递归定义如下:
1、当n=1时, Perm(R)={r};
2、当n>1时, Perm(R)=(r1)Perm(r1),(r2)Perm(r2),...,(rn)Perm(rn);
#include#include #include #include #define MAX 105using namespace std;///产生元素下标为k~m的全排列,作为前k-1个元素得后缀void Perm(char a[],int k,int m){ ///构成一次全排列,输出结果 if(k==m) { for(int i=0;i<=m;i++)///下标为m,则之前有m+1个数 printf("%c",a[i]); printf("\n"); } else { for(int j=k;j<=m;j++) { swap(a[k],a[j]); Perm(a,k+1,m); swap(a[k],a[j]); } }}int main(){ char a[MAX]; int i; scanf("%s",a); for(i=0;i