zoukankan      html  css  js  c++  java
  • 全排列的简单递归实现

    //newStart CY
    //打印全排列
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<string>
    #include<cstring>
    using namespace std;
    const int maxn = 15;
    int arr[maxn];
    //实现简单的全排列
    void print_permutation(int n,int cur,int* arr)//n为有n个数全排列,n为当前位置,arr为数组
    {
        if(cur==n)
        {
            for(int i=0;i!=n;++i)
                cout<<arr[i];
            cout<<endl;//递归终止条件
        }else{
            for(int i=1;i<=n;++i)
            {
                int  flag = true;//排除已经使用过的
                for(int j=0;j!=cur;++j)
                {
                    if(arr[j]==i)
                        flag = false;
                }
                if(flag)
                {
                    arr[cur] = i;
                    prev_permutation(n,cur+1,arr);
                }
            }
        }
    }
    int main()
    {
        prev_permutation(3,0,arr);
    }

     C++容器内的next_permutation

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int main()
    {
        int n,p[10];
        cin>>n;
        for(int i=0;i!=n;++i)
            cin>>p[i];
        sort(p,p+n);
        do{
            for(int i=0;i!=n;++i)
                cout<<p[i];
            cout<<endl;
        }while(next_permutation(p,p+n));
    }

    //适用于可重集

    不怕万人阻挡,只怕自己投降。
  • 相关阅读:
    排名第一、第二的OCR软件
    补码输出
    枚举 与 枚举的应用
    动态构造结构体数组
    c 冒泡排序
    strcpy
    typedef用法
    C 结构体小结
    int 占一个机器字长
    SQL Server创建视图——视图的作用
  • 原文地址:https://www.cnblogs.com/newstartCY/p/11448281.html
Copyright © 2011-2022 走看看