next_permutation
解法!
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 10010;
int a[N], n, m;
void my_next_permutation(int arr[], int n) {
int i = n - 2;
while (i >= 0 && a[i + 1] <= a[i]) --i;
if (i >= 0) {
int j = n - 1;
while (a[j] <= a[i]) --j;
swap(a[i], a[j]);
}
reverse(a + i + 1, a + n);
}
int main() {
cin >> n >> m;
for (int i = 0; i < n; ++i) cin >> a[i];
while (m--)
my_next_permutation(a, n);
// next_permutation(a, a + n);
for (int i = 0; i < n; ++i) cout << a[i] << ' ';
cout << endl;
return 0;
}