C语言递归实现全排列
来源:http://blog.csdn.net/creazyapple/article/details/7932432
#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; }