next_permutation()函数的使用。
提交的时候 G++会超时, C++能过。
#include <cstdio> #include <algorithm> using namespace std; int a[1040]; int main() { int n, k, i, t; scanf("%d", &t); while (t--) { scanf("%d%d", &n, &k); for (i = 0; i < n; i++) scanf("%d", &a[i]); i = 0; while (true) { if (i == k) break; if (!next_permutation(a, a + n)) { for (int j = 0; j < n; j++) a[j] = j + 1; } i++; } for (i = 0; i < n - 1; i++) printf("%d ", a[i]); printf("%d\n", a[i]); } return 0; }