递归算法-排列问题

递归算法之排列问题,问题的描述是这样的,给定一串数字,输出这串数字的全排列。

#include <iostream>
using namespace std;
int result=0;
void Swap(int *data,int a,int b)
{
    int temp;
    temp=data[a];
    data[a]=data[b];
    data[b]=temp;
}

void Perm(int *data,int k,int m)
{
    if(k==m)
    {
        for(int i=0;i<m;i++)
        cout<<data[i];
        cout<<endl;
        result++;
    }
    else
    for(int i=k;i<m;i++)
    {
        Swap(data,k,i);
        Perm(data,k+1,m);
        Swap(data,k,i);
    }
}
int main()
{
    int num;
    int *data;
    cout<<"请输入数据个数:"<<endl;
    cin>>num;
    cout<<"请输入数据:"<<endl;
    data=new int[num];
    for(int i=0;i<num;i++)
        cin>>data[i];

    cout<<"各种序列:"<<endl;
    Perm(data,0,num);
    cout<<"共有"<<result<<"种"<<endl;
    return 0;
}

  

posted @ 2013-04-09 23:26  再见,少年  Views(378)  Comments(0Edit  收藏  举报