玄学
查看原帖
玄学
736527
Arrtan_73楼主2023/5/5 18:43
#include <iostream>
using namespace std;
int T, n, a[1005], b[1005];

bool check() {
	for (int i = 1; i <= n; i++) {
		if (a[i] == b[i])
			return false;
	}
	return true;
}

void print() {
	for (int i = 1; i <= n; i++)
		cout << b[i] << " ";
}

int main() {
	cin >> T;
	while (T--) {
		cin >> n;
		for (int i = 1; i <= n; i++)
			cin >> a[i], b[i] = i;
		if (n == 1) {
			cout << -1 << endl;
			continue;
		}
		for (int i = 1; i <= n; i++) {
			if (a[i] == b[i]) {
				if (i == n)
					swap(b[i], b[i - 1]);
				else
					swap(b[i], b[i + 1]);
			}
		}
		if (check())
			print();
		else
			cout << -1;
		cout << endl;
	}
	return 0;
}
2023/5/5 18:43
加载中...