全排列问题

2018-06-17 23:46:27来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

题目:排列问题,设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;
}

运行结果如下:

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:利用二分法实现插入排序算法(二分法使用递归来实现)

下一篇:【入门】匈牙利算法+HNOI2006 hero超级英雄