- 思路题题意:有2n个数,每个数不重复,任意相连的n个数之间差为一
- 最开始可能,比如5:
- 1 3 5 7 9
- 10 8 6 4 2
- 每相邻的气泡差为一,但不符合题意任意两个气泡差为一
- 所以要反复横跳,n, n+1, n, n+1, n,n+1,这样不断循环
- 就变成
- 1 4 5 8 9
- 10 7 6 3 2
- 再细节一点
- 1+1 4-1 5+1 8-1 9+1
- 2 3 6 7 10
#include<bits/stdc++.h>
#include<stack>
using namespace std;
int a[100005];
int main(){
int t, n;
cin >> t;
while(t --){
cin >> n;
if(n % 2 == 0){
cout << "NO" << endl;
continue;
}
cout << "YES" << endl;
int k = 2, j = 1;
for(int i = 1; i <= n; i ++){
if(i != 1)cout << " ";
cout << j;
if(k == 2){
j += 2;
k = 0;
}
j ++;
k ++;
}
j = 2, k = 1;
for(int i = 1; i <= n; i ++){
cout << " " << j;
if(k == 2){
j += 2;
k = 0;
}
j ++;
k ++;
}
cout << endl;
}
return 0;
}