1 #include <stdio.h>
2
3 void perm(char str[],int k,int n)//递归求str[0]~str[k]的全排列
4 {
5 int i,j;
6 char tmp;
7 if(k==0)
8 {
9 for(j=0;j<n;j++)
10 printf("%c\t", str[j]);
11 printf("\n");
12 }
13 else
14 {
15 for(i=0;i<=k;i++)
16 {
17 tmp=str[k];//交换str[k]和str[i]
18 str[k]=str[i];
19 str[i]=tmp;
20 perm(str,k-1,n);//对于str[k]位置,可以取str[0]~str[k]任何值,递归至k==0打印输出
21 tmp=str[k];//交换回来str[k]和str[i]
22 str[k]=str[i];
23 str[i]=tmp;
24 }
25 }
26 }
27 int main(int argc, char const *argv[])
28 {
29 char a[]="123";
30 perm(a,2,3);
31
32 return 0;
33 }
运行结果:
原文:https://www.cnblogs.com/gilgamesh-hjb/p/11924288.html