题目链接
题目大意
就是一个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;
}