题意:产生第m大的排列
思路:使用 next_permutation函数(头文件algorithm)
#include<iostream> #include<stdio.h> #include<algorithm> using namespace std; int main(){ int a[1024],n,m,i; while(~scanf("%d%d",&n,&m)){ for(i=1;i<=n;++i)a[i]=i; for(i=1;i<m;++i)next_permutation(a+1,a+1+n); for(i=1;i<n;++i)printf("%d ",a[i]); printf("%d ",a[i]); } return 0; }
ps:与之相反的函数 prev_permutation