递归实现全排列算法-161029

Posted fish in the sea

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归实现全排列算法-161029相关的知识,希望对你有一定的参考价值。

算法要点:

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

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

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

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

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

所以要用swap函数

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

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

      依次把每个元素放到前面

        然后全排列剩下的

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

161029

     

以上是关于递归实现全排列算法-161029的主要内容,如果未能解决你的问题,请参考以下文章

PHP实现全排列(递归算法)

全排列算法--递归实现(Java)

算法——全排列

全排列(Perm)的递归实现算法

递归实现DFS全排列

算法之使用递归求解全排列