我在某个OJ上见到了一道题。
问题描述
0、1、2三个数字的全排列有六种,按照字母序排列如下:
012、021、102、120、201、210
输入n, M。求0~n-1十个数的全排列中的第M个(第1个为0 1 2 3 4 .. n-1)。
输入格式 一行,包含n, M
输出格式 一行,包含一组n个数字的全排列
我的代码:
#include<bits/stdc++.h>
using namespace std;
int main(void){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
long long n,m;
cin>>n>>m;
int val[30]={};
for(long long i=0;i<n;i++)val[i]=i;
for(long long i=1;i<m;i++)next_permutation(val,val+m-1);
for(long long i=0;i<n;i++)cout<<val[i]<<" ";
return 0;
}
对了,时间:1s,内存:256MB