[2004年NOIP普及组] 火星人
[2004年NOIP普及组] 火星人
- 分析:根据题意,要在题中给出的排列组合的基础上,加上m,形成一个新的排列组合。因为全排列是按照从小到大的顺序进行的,所以我们可以转化为全排列问题,m是几就代表进行几次全排列,所以进行m次全排列后的数就是题目中要求的数。在这里有一个全排列函数next_permutation,每调用一次就进行一次全排列。
-
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int main() { int n,m,a[10001]; cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=m;i++) next_permutation(a+1,a+n+1);//全排列函数 for(int i=1;i<=n;i++) cout<<a[i]<<" "; return 0; }

浙公网安备 33010602011771号