递归实现全排列算法-161029
算法要点:
n个元素的全排列:一个元素放在最前方,剩下n-1个元素的全排列
出口:当就剩下一个元素需要全排列的时候,把数组打印出来就行了
http://blog.csdn.net/xiazdong/article/details/7986015------------写的比黑皮书好致敬!
没想明白的地方:当一个元素需要全排列时,这时候打印数组,说明这个时候数组整个就已经被改变了。
所以在之前,应该做 把一个元素放在最前方, 在之后,把数组恢复成原来的样子
所以要用swap函数
perm(type list[],int begin,int end)
*for()------用循环
依次把每个元素放到前面
然后全排列剩下的
恢复数组本来的样子,方便下次循环的时候把其他的元素放到第一位,这样不会出现重复
161029