全排列问题:
对于给定的集合A{a1,a2,…,an},其中的n个元素互不相同,如何输出这n个元素的所有排列(全排列)。
解题思路 1:递归方式求解
以元素(1,2,3,4,5,6)为例。进行如下图所示的操作,最终可得到所有排列。
对于每一个元素,用下标做i标记,对于每一个递归调用 for(int i=index;i<=n;i++) 先交换a[i]与a[index]的值,然后进行递归调用prem_(index+1),回溯的时候应该再讲值交换回来。
即
void prem_(int index)
{
if(index == n)
{
print_();return ;
}
else
{
for(int i=index;i<=n;i++)
{
swap_(i,index