problem

  • 给定一个长为n的排列
  • 求他的后面的第m个排列
  • n<1e4,m<100

solution

C++STL的next_permutation了解一下,复杂度O(n)的。
全题复杂度O(mn)

codes

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 10010;
int a[maxn];
int main(){
int n, m;
cin>>n>>m;
for(int i = 1; i <= n; i++)cin>>a[i];
for(int i = 1; i <= m; i++)next_permutation(a+1,a+n+1);
for(int i = 1; i <= n; i++)cout<<a[i]<<' ';
return 0;
}