题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1027
题目大意:对于1~n的一个序列,输出第m个下一个排列。
题目分析:在做这道题目之前已听学长讲起过一个STL里的函数可以直接求下一个排列,于是这道题就像切菜一样切掉了。
代码参考:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int num[2000];
int main()
{
int n, m, i;
while(~scanf("%d%d", &n, &m))
{
for(i=1; i<=n ;++i)
{
num[i] = i;
}
for(i=1; i<m; ++i)
{
next_permutation(num+1, num+n+1);//求从num+1~num+n+1的下一个排列
}
for(i=1; i<=n; ++i)
{
printf("%d%c", num[i], i==n? '\n' : ' ');
}
}
return 0;
}