题目链接
题意:全排列找出第k大的排列。
思路:如果n<10~15,可以用dfs暴力搜索,但是n<1000;所以要用STL里的
next_permutation函数来写————附上原博客
并且,我的上条博客的题目:HDU - 1716也可用此方法写。
代码:
#include<iostream>
#include<cstdlib>
#include<sstream>
#include<cstdio>
#include<stack>
#include<cstdio>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
#define me(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
const int N=1111122;
const int M=200005;
int a[M];
int main()
{
int i,ans,n,m;
while(~scanf("%d%d",&n,&m))
{
ans=0;
for(i=0;i<n;i++)
a[i]=i+1;
do
{
ans++;
if(ans==m)break;
}
while(next_permutation(a,a+n));
for(i=0;i<n;i++)
i==n-1?cout<<a[i]<<endl:cout<<a[i]<<" ";
}
system("pause");
return 0;
}