POJ 1883 排序 ( 水 + next_permutation )

链接:传送门
题意:
思路:next_permutation(),水,但是要注意一点的是如果是最后一个排列next_permutation会返回第一个排列并结束,所以如果到了最后一个排列还不是第k个就处理一下即可

/*************************************************************************
    > File Name: 31.cpp
    > Author:    WArobot 
    > Blog:      http://www.cnblogs.com/WArobot/ 
    > Created Time: 2017年04月19日 星期三 22时15分06秒
 ************************************************************************/

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

int t,n,k;
int s[1034];
int main(){
	scanf("%d",&t);
	while(t--){
		scanf("%d%d",&n,&k);
		for(int i=0;i<n;i++)	scanf("%d",s+i);
		int cnt = 0 , i;
		do{
			cnt++;
			for(i=0;i<n;i++)
				if(s[i]!=n-i)	break;
			if(i==n){
				cnt++;
				for(int i=0;i<n;i++)	s[i]=i+1;
			}
			if(cnt == k+1)	break;
		}while(next_permutation(s,s+n));
		for(int i=0;i<n;i++)	printf("%d%c",s[i],i==n-1?'\n':' ');
	}
	return 0;
}
posted @ 2017-04-19 22:42  ojnQ  阅读(172)  评论(0编辑  收藏  举报