poj 1833

【题意】根据一个排列,按照字典排列的顺序输出它的下面k个排列。

    用C++的STL库的next_permutation()函数直接生成下一个排列 就可以了  3 2 1 的下一个排列会是 1 2 3

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int p[1111];

int main()
{
    int t,n,k;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&k);
        for(int i=0;i<n;i++)
            scanf("%d",&p[i]);
        while(k--)
            next_permutation(p,p+n);
        //printf("ans   ");
            printf("%d",p[0]);
        for(int i=1;i<n;i++)
            printf(" %d",p[i]);
        printf("\n");
    }
    return 0;
}

 

posted @ 2014-03-30 13:34  galaxy77  阅读(240)  评论(0编辑  收藏  举报