笔记——全排列函数

来源:互联网 发布:买黄金软件下载 编辑:程序博客网 时间:2024/06/03 20:28
#include <algorithm>
#include <stdio.h>
using namespace std;
// 即使有重复的元素也会生成所有的排列
// next_permutation是按照字典序来生成下一个排列的,最后一个数列为:n,n-1...4,3,2,1
#define MAX_N 100
int perm[MAX_N];
void permutation(int n)
{
    for(int i=0;i<n;i++)
    {
        perm[i]=n-i;
    }
    do
    {
        for(int i=0;i<n;i++)
        {
            printf("%d ",perm[i]);
        }
        printf("\n");
    }while (next_permutation(perm,perm+n));
    //所有的排列都生成后,next_permutation会返回false
    return ;
}


void permutation2(int n)
{
    for (int i=0;i<n;i++)
    {
        perm[i]=i;
    }
    do
    {
        for(int i=0;i<n;i++)
        {
            printf("%d ",perm[i]);
        }
        printf("\n");
    }while(next_permutation(perm,perm+n));
    //所有的排列都生成后,next_permutation会返回false
    return ;
}


int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        printf("1\n");
        permutation(n);
        printf("2\n");
        permutation2(n);
    }


    return 0;
}
原创粉丝点击