C程序-蓝桥-算法提高 排列数

问题描述

  0、1、2三个数字的全排列有六种,按照字母序排列如下:
  012、021、102、120、201、210
  输入一个数n
  求0~9十个数的全排列中的第n个(第1个为0123456789)。

输入格式

  一行,包含一个整数n

输出格式

  一行,包含一组10个数字的全排列

样例输入

1

样例输出

0123456789

数据规模和约定

  0 < n <= 10!

分析next_permutation函数执行过程:
假设数列 d1,d2,d3,d4……
范围由[first,last)标记,调用next_permutation使数列逐次增大,这个递增过程按照字典序。例如,在字母表中,abcd的下一单词排列为abdc,但是,有一关键点,如何确定这个下一排列为字典序中的next,而不是next->next->next……
若当前调用排列到达最大字典序,比如dcba,就返回false,同时重新设置该排列为最小字典序。
返回为true表示生成下一排列成功。

C程序-蓝桥-算法提高 排列数_第1张图片

#include 
#include 
#include 
#include 
using namespace std;

int main( ) 
{
	int n,i;
	int arr[10]={0,1,2,3,4,5,6,7,8,9};
	scanf("%d",&n);
	for(i=1;i

 

你可能感兴趣的:(C/C++程序,蓝桥)