全排列问题在公司笔试的时候很常见,这里介绍其递归实现
递归算法也是一种很重要的算法
#include <stdio.h>
#include <string.h>
void f(char str[],int temp,int n)
//定义函数,每次排列第temp个元素
{
int i;
char t;
if(temp==n-1)
{
puts(str);
return ;
}
else
{
for(i=temp;i<n;i++)//循环将第temp个元素与后续元素交换
{
t=str[temp];str[temp]=str[i];str[i]=t;
f(str,temp+1,n);//将第temp+1个元素分别再与后续元素交换
t=str[temp];str[temp]=str[i];str[i]=t;//回溯
}
}
}
int main()
{
char str[100];
int n;
gets(str);
n=strlen(str);
f(str,0,n);
return 0;
}