算法提高 排列数

Posted 多一份不为什么的坚持

tags:

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

  算法提高 排列数  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  0、1、2三个数字的全排列有六种,按照字母序排列如下:
  012、021、102、120、201、210
  输入一个数n
  求0~9十个数的全排列中的第n个(第1个为0123456789)。
输入格式
  一行,包含一个整数n
输出格式
  一行,包含一组10个数字的全排列
样例输入
1
样例输出
0123456789
数据规模和约定
  0 < n <= 10!
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#define for(i,x,n) for(int i=x;i<n;i++)
#define ll long long int
#define INF 0x3f3f3f3f
#define MOD 1000000007
#define MAX_N 50005

using namespace std;

int main()
{
    //freopen("data.txt", "r", stdin);
    //freopen("data.out", "w", stdout);
    int a[30];
    int n;
    scanf("%d",&n);
    for(i,0,10){
        a[i]=i;
    }
    for(i,1,n){
        next_permutation(a,a+10);
    }
    for(i,0,10){
        printf("%d",a[i]);
    }
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

 

以上是关于算法提高 排列数的主要内容,如果未能解决你的问题,请参考以下文章

算法提高 排列数 (全排列)

算法提高 数字黑洞

C++代码 递归算法 n个数的全排列 (是任意的,可不连续) 要求: 提示输入数的个数n 然后提示输入这n个

算法提高 连接乘积

回溯算法求关于排列有关问题

PHP如何对一组数进行重新排列(冒泡算法)