zoukankan      html  css  js  c++  java
  • 全排列

           今天学了个叫全排列的东西:next_permutation(start,end),和prev_permutation(start,end)。头文件是#include <algorithm>

    next_permutation(start,end):求的是当前排列的下一个排列。

    prev_permutation(start,end):求的是当前排列的上一个排列。

    很懵逼对吧,下面是实例:

    #include <iostream>
    #include <algorithm>
    using namespace std;
    int main()
    {
        int num[3]={1,2,3};
        do
        {
            cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl;
        }while(next_permutation(num,num+3));
        return 0;
    }

    输出:

    1 2 3

    1 3 2

    2 1 3

    2 3 1

    3 1 2

    3 2 1

    while(next_permutation(num,num+3))中的3改为2时,输出就变为了:

    1 2 3

    2 1 3

    另外,需要强调的是,next_permutation()在使用前需要对欲排列数组按升序排序,否则只能找出该序列之后的全排列数。比如,如果数组num初始化为2,3,1,那么输出就变为了:

    2 3 1

    3 1 2

    3 2 1

    此外,next_permutation(node,node+n,cmp)可以对结构体num按照自定义的排序方式cmp进行排序。

     
  • 相关阅读:
    Web 服务器配置
    Web 浏览
    C++ Web 编程
    C++ 多线程
    C++ 信号处理
    C++ 预处理器
    C++ 模板
    C++ 命名空间
    C++ 动态内存
    C++ 异常处理
  • 原文地址:https://www.cnblogs.com/RootVount/p/10420139.html
Copyright © 2011-2022 走看看