题解:P1088 [NOIP 2004 普及组] 火星人
Dark_Blue_Sky · · 题解
题解:P1088 [NOIP 2004 普及组] 火星人
题目简述
火星人有编号为
分析
不难发现,火星人的手指编号不重复,那么每一个序列都是一个排列。而序列字典序从小到大的顺序就是 C++ 中 next_permutation 中的排列顺序。因此,我们只需要用 next_permutation 函数重复
代码
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];//input
for(int i=1;i<=m;i++)next_permutation(a+1,a+n+1);//求出比给出序列大的所有序列中第 m 小的序列
for(int i=1;i<=n;i++)cout<<a[i]<<" ";//output
return 0;
}