next_permutation函数(全排列)

Posted hrlsm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了next_permutation函数(全排列)相关的知识,希望对你有一定的参考价值。

题目描述:有一个数n(1<n<10),写出1到n的全排列。

输入:第一行输入一个数n(0<n<10),表示有n组测试数据。后面的n行输入多组输入数据,每组输入数据都是一个整数x(0<x<10)

输出按特定顺序输出所有组合。
特定顺序:每一个组合中的值从小到大排列,组合之间按字典序排列。

输入:

2
2
3

输出:

12
21
123
132
213
231
312
321
#include<iostream>
#include<algorithm>
using namespace std;
int a[15];
int main()
{
    int n,x,i;
    cin>>n;
    ++n;
    while(--n)
    {
        cin>>x;
        for(i=0; i<x;++i)
            a[i]=i+1;
        for(i=0; i<x;++i)
            cout<<a[i];
        cout<<endl;
        while(next_permutation(a,a+x)==1)
        {
            for(i=0; i<x;i++)
                cout<<a[i];
            cout<<endl;
        }
    }
    return 0;
}

函数next_permutation()是按照字典序产生排列的,并且是从数组中当前的字典序开始依次增大直至到最大字典序。

next_permutation(),可以遍历全排列,要包含头文件<algorithm>

与之完全相反的函数还有prev_permutation

基本格式:

int a[];
while(next_permutation(a,a+n))
{
}

 

以上是关于next_permutation函数(全排列)的主要内容,如果未能解决你的问题,请参考以下文章

STL中next_permutation函数的应用-全排列(C++)

STL中next_permutation函数的应用-全排列(C++)

STL中next_permutation函数的应用-全排列(C++)

next_permutation函数(全排列)

STL之next_permutation函数对各种类型的全排列实例

全排列问题(next_permutation函数)