Generate Permutation§
按奇偶性分类讨论就行。
显然奇数情况可以从中间往后递增填数字,之后前面的位置就由剩下的数字倒序插入即可。
偶数情况则不可能构造出数列。
#include <bits/stdc++.h> #define int long long void solve() { int n; std::cin >> n; if (n & 1) { int cnt = n / 2; int p = n; std::vector<int> a; while (cnt--) { a.push_back(p); p--; } a.push_back(1); p = 2; cnt = n / 2; while (cnt--) { a.push_back(p); p++; } for (auto it : a) { std::cout << it << ' '; } std::cout << '\n'; } else { std::cout << -1 << '\n'; } } signed main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int t; std::cin >> t; while (t--) { solve(); } return 0; }