递归实现全排列算法-161029

算法要点:

n个元素的全排列:一个元素放在最前方,剩下n-1个元素的全排列

出口:当就剩下一个元素需要全排列的时候,把数组打印出来就行了

http://blog.csdn.net/xiazdong/article/details/7986015------------写的比黑皮书好致敬!

没想明白的地方:当一个元素需要全排列时,这时候打印数组,说明这个时候数组整个就已经被改变了。

所以在之前,应该做 把一个元素放在最前方, 在之后,把数组恢复成原来的样子

所以要用swap函数

perm(type list[],int begin,int end)

*for()------用循环

      依次把每个元素放到前面

        然后全排列剩下的

     恢复数组本来的样子,方便下次循环的时候把其他的元素放到第一位,这样不会出现重复

161029

     

原文地址:https://www.cnblogs.com/Cherrylalala/p/6010140.html