蓝桥杯 算法提高 排列数 0、1、2三个数字的全排列有六种,按照字母序排列如下:   012、021、102、120、201、210   输入一个数n   求0~9十个数的全排列中的第n个(第1个

    科技2024-05-25  82

    问题描述

    0、1、2三个数字的全排列有六种,按照字母序排列如下:   012、021、102、120、201、210   输入一个数n   求0~9十个数的全排列中的第n个(第1个为0123456789)。 输入格式   一行,包含一个整数n 输出格式   一行,包含一组10个数字的全排列 样例输入 1 样例输出 0123456789 数据规模和约定   0 < n <= 10!

    思路

    本题最简单的方法就是采用next_permutation 函数。

    代码:

    #include <algorithm> #include <stdio.h> using namespace std; int num = 0; int main () { int n; scanf("%d",&n); int i; int a[]={0,1,2,3,4,5,6,7,8,9}; int b=10; do { num++; if(num == n) { for(i=0;i<10;i++) printf("%d",a[i]); } }while(next_permutation(a,a+b)); return 0; }
    Processed: 0.020, SQL: 9