全排列问题

题目:排列问题,设R={r1,r2...rn}是要进行排列的n个元素,求R的全排列perm(R);

        a、递归关系 Ri=R-{ri}

                         perm(R)=U(ri)perm(Ri)

        b、终止条件:n=1时

        c、参数 int k,int  m

代码如下:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <vector>
#include <stack>
using namespace std;
int n;
int a[1000];

void perm(int k,int m)
{
    if(k==m)
    {
        for(int i=1; i<=n; i++)
            cout<<a[i]<<" ";
        cout<<endl;
    }
    else
        for(int i=k; i<=m; i++)
        {
            swap(a[i],a[k]);
            perm(k+1,m);
            swap(a[i],a[k]);
        }
}
int main()
{
    while(cin>>n)
    {
        for(int i=1; i<=n; i++)
            cin>>a[i];
        cout<<"全排列如下:"<<endl;
        perm(1,n);
    }
    return 0;
}

运行结果如下:

 

posted @ 2016-09-13 21:15  茶飘香~  阅读(373)  评论(0编辑  收藏  举报