【算法复习】全排列专题

一,全排列算法

由于这部分十分重要,这里再次做一下总结。

更多详细内容参考博文组合数学-全排列


二,算法思想

这里采用递归算法,思路如下

固定第一个数,然后处理后面n-1的全排列。

第一个数的可能性有n种,故采用for循环依次将后面n-1个数swap到前面,递归处理。处理完成之后再交换过来。

例如:1 2 3 : 固定1 然后全排列 2 3

swap(2,2)(固定2) 然后全排列 3 //输出 1 2 3

swap(2,3)(固定3) 然后全排列2 //输出 1 3 2

递归之后交换swap(3,2)

swap(1,2) 固定2 然后处理 1 3 //同理

swap(1,3) 固定3 然后处理 1 2 //同理






三,提高篇

问题:从1--n 中的n个数中选取 r个数,全排列输出

思想:递归算法 选取 r个数,然后调用全排列算法





你可能感兴趣的:(全排列)