题目大意:题目给出n和m,从1到n的一串数字,当然是存在字典序的,就比如1、2、3这三个数,字典序从小到大就是123、132、213、231、312、321。题目要求找出由1到n数字组成的字典序为m的排列;
题目思路 :STL里面有全排列函数哇,n最多才1000个,直接一个一个来就好;
题目链接:题目在这里
AC代码:
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int num[1005];
int main(void)
{
int n,m,i,cnt;
while(~scanf("%d%d",&n,&m))
{
memset(num,0,sizeof(num));
cnt=1;
for(i=1;i<=n;i++)
{
num[i]=i;
}
m--;
while(next_permutation(num+1,num+n+1))
{
if(cnt==m)
{
for(i=1;i<n;i++)
printf("%d ",num[i]);
printf("%d\n",num[n]);
break;
}
cnt++;
}
}
return 0;
}
呼呼