递归全排列

195 阅读1分钟

题目

输入一个整数N,程序输出数字1,2,3…N的全部排列。例如,如果N=3,那么数字1,2,3的全部排列如下:

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2

3 2 1

 

思路:分析题目,可以将整数N转换成一个有N个结点的,然后从第一个结点开始,一个一个加入需要生成的序列中,例如,首先添加1,生成的路径只有一种,然后将2添加进来,这样对已有的路径中添加2,在1的前面都可以添加,这样就生成了两种路径了,此次类推。。。

 

                                                                                                       已有的 路径

添加1开始:                                                                                             1

添加2(这时有两个位置可以插入2)                                          2,1                                  1,2

添加3(这时每个已有路径里可以插入3的位置有三个位置) 3,2,1| 2,3,1|2,1,3         3,1,2 |1,3,2|1,2,3

代码

image.png