全排列问题,假设让你打印出123的全排列。
考虑这个问题,观察123的全排列为123 132 213 231 312 321 很清楚找到其规律 就是先固定一个位置再算起n-1的全排列,很明显的递归措施,当然其中我们必须通过交换其值。
代码如下:
#include<iostream>
using namespace std;
void swap(int &v1,int &v2)
{
int temp=v2;
v2=v1;
v1=temp;
}
void Perm(int *A,int size,int index)
{
if(index>=size)
{
for(int i=0;i<size;++i)
cout<<A[i]<<" ";
cout<<endl;
return;
}else
{
for(int i=index;i<size;++i)
{
swap(A[i],A[index]);
Perm(A,size,index+1);//递归实现处
swap(A[i],A[index]);
}
}
}
int main()
{
int A[]={1,2,3};
Perm(A,3,0);
}