用递归法进行n个数的全排列,思路是怎样的?c++实现

如题所述

比如1,2,3,4 可以变成 2,1,3,4 ,3,12,4 , 4,1,2,3 再把后面134, 12,4 , ,123 ,按同样的方法递归就行了,简单就用几个循环,然后逐次设置一个不等的条件就可以了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-26
我们先假设要求解这样一个问题:
已知a1,a2,...,an是n个元素的一个序列,命名为Am0,现要求出这n个元素的全排列中与Am0的前m个元素相同的所有序列;
这个问题的解法分两步:
1、将序列Am0的m+1序号上的元素分别与m+1序号及以后的元素交换,得到n-m个新的序列(包括Am0本身),命名为Am0,Am1,Am2,...,Am(n-m-1)。我们认为这个时候这n-m个新序列的m+1序号上的元素已经确定;
2、分别对第1步得到的n-m个新序列求解同样的问题。
即求出n个元素的全排列中与Ami的前m+1个元素相同的所有序列。

现已知这n个数的任意一个序列A。
求n个数的全排列就是求出这n个元素的全排列中与A前0个元素相同的所有序列。本回答被网友采纳