/*
全排列问题 加入输入abc,输出他的全排列abc acb bac bca cab cba
方法一 递归实现
思路 每一层递归固定一位
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int flag=0;
/*交换*/
void swap(char *a,char *b)
{
char tmp=*a;
*a=*b;
*b=tmp;
}
/*每一层递归固定一位*/
void CalcAllPermutation(char *str,int from,int to)
{
if(to == 1)
{
printf("%s\n",str);
return;
}
if(from == to)
{
flag++;
printf("%s %d\n",str,flag);
}
int i;
for(i=from;i<to;i++)
{
swap(&str[from],&str[i]);
CalcAllPermutation(str,from+1,to);
swap(&str[from],&str[i]);
}
}
int main()
{
char str[]="abd";
int from=0;
int to=from+strlen(str);
CalcAllPermutation(str,from,to);
}
/*
./a.out
abd 1
adb 2
bad 3
bda 4
dba 5
dab 6
*/
字符串-字符串的全排列-递归实现
最新推荐文章于 2024-07-10 11:03:05 发布
