递归思想实现全排列
[cpp]#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;
}
补充:软件开发 , C++ ,