[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;
     } 

     

posted @ 2022-08-23 21:02  4lovls  阅读(82)  评论(0)    收藏  举报