以字符串"ABCDE"为例,生成全排列,则一共有120种情况。大致的做法就是递归回溯操作
#include <stdio.h>
int visit[5];
void select(char *src, int len, char *res, int curr)
{
if(curr == len) puts(res);
else{
int i;
for(i = 0; i < len; i++){
if(visit[i] == 0){
visit[i] = 1;
res[curr] = src[i];
select(src, len, res, curr + 1);
visit[i] = 0;
}
}
}
}
int main()
{
char *source = "ABCDE";
char result[8] = {0};
int i;
for(i=0;i<5;i++) visit[i] = 0;
select(source, 5, result, 0);
return 0;
}