每日一道思维题——CF1352G - Special Permutation
题意:
有一个数n,求出,长度为n且左右差值x满足 2 <= x <= 4 的序列
解题思路:
1.n < 4时,无解
2. n = 4时,输出 3 1 4 2
3.n > 4且为奇数时,输出 1 1+2 1+4.....n-2 n n-3 n-1 n-5 n-7....2
4.n > 4且为偶数时,输出 1 1+2 1+4.....n-1 n-4 n-2 n-6 n-8....2
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<algorithm> #include<vector> using namespace std; typedef pair<int, int> PII; int main() { int t; scanf("%d", &t); while(t--) { int n; scanf("%d", &n); if(n < 4) printf("-1\n"); else if(n == 4) printf("3 1 4 2\n"); else if(n & 1){ for(int i = 1; i <= n; i+=2) printf("%d ", i); printf("%d %d ", n-3, n-1); for(int i = n-5; i >= 2; i-=2) printf("%d ", i); printf("\n"); }else{ for(int i = 1; i <= n-1; i+=2) printf("%d ", i); printf("%d %d %d ", n-4, n, n-2); for(int i = n-6; i >= 2; i-=2) printf("%d ", i); printf("\n"); } } return 0; }
浙公网安备 33010602011771号