题意
给一个数字N,要求输出长度为N 并且由1->N组成的数列,并且两个相邻的数字之差应该在2->4之间。
#include<bits/stdc++.h>
#define sd(t) scanf("%d",&t);
const int N = 2e5 + 10;
int n, m, k;
int cnt, res, pos, ans;
int a[N];
int main()
{
int t;
sd(t);
while (t--)
{
sd(n);
if (n < 4)
{
puts("-1");
continue;
}
if (n == 4)
{
puts("3 1 4 2");
continue;
}
ans = 1;
while (ans <= n)
printf("%d ", ans), ans += 2;
//以下为核心,难点
ans -= 5, printf("%d ", ans);
if (ans + 4 <= n)
printf("%d ", ans + 4);
if (ans + 2 <= n)
printf("%d ", ans + 2);
ans -= 2;
while (ans > 1)
printf("%d ", ans), ans -= 2;
printf("\n");
}
return 0;
}
`