全排列的递归实现

来源:互联网 发布:送女生生日礼物 知乎 编辑:程序博客网 时间:2024/05/16 11:54

全排列问题,假设让你打印出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);}


0 0