題目鏈接
題目大意
就是一個n,要你寫出一個全排列滿足所有相鄰元素差值的絕對值大於等於2小於等於4.
題目思路
構造題,但是我沒什麼具體的思路,其實很簡單。
如果n <4,則沒有答案。 您可以做一些手工確定。 否則,答案存在,並且有一種簡單的構造方法:首先,讓我們將所有奇數整數以遞減順序放入答案中,然後將4、2和所有其他偶數以遞增順序放置。 要測試它始終有效,您可以在本地運行某種檢查器(可以在不到一秒鐘的時間內非常快速地檢查所有1000個測試,這有時可能很有用)。
代碼
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int t,n;
signed main(){
scanf("%d",&t);
while(t--){
scanf("%d",&n);
if(n<4){
printf("-1");
}else{
for(int i=n;i>=1;i--){
if(i%2==1){
printf("%d ",i);
}
}
printf("4 2 ");//
for(int i=6;i<=n;i=i+2){
printf("%d ",i);
}
}
printf("\n");
}
return 0;
}