您的位置:首页 > 其它

递归思想实现全排列

2012-09-01 16:02 274 查看
#include <stdio.h>

int Swap(char *a,char *b)
{
char c;
c = *a;
*a = *b;
*b = c;
}

/*
* 递归思想实现全排列
* 对abc进行全排列,那么可以看做:ab的全排列+c和ac的全排列+b和bc的全排列+a三个的组合
*/
void Perm(char *list, int k)
{
//排列list数组中k以后的子串
int i;
if ('\0' == list[k]) {//输出一个排列方式
printf("%s\t",list);
putchar('\n');
}
else
{
for (i=k; list[i]!='\0'; i++) {
Swap (&list[k], &list[i]);
Perm (list, k+1);//全排列右子串

Swap (&list [k], &list [i]);
}
}
}

int main(int argc ,char *argv[])
{
char string[10] = "123";
Perm(string,0);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: