全排列思路
目录
省流版结论
推导过程
输出结果(元素数量为4时)
省流版结论
(程序来源:排列组合之——全排列(c语言)_rewrite!的博客-CSDN博客_全排列)
一晚上的时间,终于弄懂了。真羡慕计算机的同学捏。
相当于:
然后,“回溯”指的是,在每次交换位置并进行输出后,把交换过的元素放回到原来的位置。这样有利于下一次交换位置。
推导过程
以数组长度为4为例,一步一步推导:
1 2 3 4
1 2 4 3(输出后回溯到1 2 3 4这样的排列)
1 3 2 4
1 3 4 2(输出后先回溯到1 3 2 4这样的排列,再回溯到1 2 3 4这样的排列)
1 4 3 2
1 4 2 3(输出后先回溯到1 4 3 2这样的排列,再回溯到1 2 3 4这样的排列)
只推导到了这里,其实这时候已经明白逻辑了
下一次应该是2 1 3 4,再重复3和4交换,在回到2 1 3 4;然后先1和3交换变成2 3 1 4(以及1和4交换变成2 3 4 1),回到2 1 3 4;再1和4交换变成2 4 3 1......一看结果,果然是这样
输出结果(元素数量为4时)