题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1027
题记:用STL里的求下一个排列组合的函数next_permutation()求第m个序列即可。
#include<bits/stdc++.h>
using namespace std;
int a[100];
int main(){
int n,m;
while(cin>>n>>m){
for(int i=1;i<=n;i++)//生成一个从1到n的字典序最小的序列
a[i]=i;
int sum=1;
do{//由于开始时数组a的序列就是最小的,所以用do while
if(sum==m)break;//当sum等于m时退出
sum++;
}while(next_permutation(a+1,a+n+1));
for(int i=1;i<n;i++)
cout<<a[i]<<" ";
cout<<a[n]<<endl;
}
return 0;
}