全排序 递归、回溯
tips:转换思维方式,找出任务的规律,自己调用自己,设置出口
#include <stdio.h> // 求 n 个元素的全排列 abc acb bac bca cab cba
#include <string.h>
void f(char a[], int begin)
{
int i;
char t;
if(strlen(a) == begin)
{
int j;
for(j = 0; j < strlen(a); j++)
printf("%c ", a[j]);
printf("\n");
}
for(i = begin; i < strlen(a); i++)
{
{
t = a[i]; a[i] = a[begin]; a[begin] = t; //递归
}
f(a, begin+1);
{
t = a[i]; a[i] = a[begin]; a[begin] = t; //回溯
}
}
}
int main()
{
char a[] = {"abcde"};
//printf("%d\n", strlen(a));
f(a, 0);
return 0;
}