题目描述:这道题就是让你输入:{'a','b','c'},这样的数组,然后返回相应的组合,'abc','acb','bac','bca','cab','cba'。
解析:这道题书上解析用的递归,相对来说递归要简单,逻辑清晰很多。
#include <stdio.h>
#include <stdlib.h>
void perhost(char *str,char *beginStr)
{
if(*beginStr=='\0')
{
printf("%s\n",str);
}else
{
for(char *p=beginStr;*p!='\0';++p)
{
char tmp=*p;
*p=*beginStr;
*beginStr=tmp;
perhost(str,beginStr+1);
tmp=*p;
*p=*beginStr;
*beginStr=tmp;
}
}
}
void host(char *str)
{
if(str==NULL)
{
return;
}
perhost(str,str);
}
int main()
{
char str[]={'b','c','d'};
host(str);
}