VJ——A. Perfect Permutation CodeForces - 233A

版权声明:叁土 https://blog.csdn.net/qq_42847312/article/details/81947550

A. Perfect Permutation

A permutation is a sequence of integers p1, p2, …, pn, consisting of n distinct positive integers, each of them doesn’t exceed n. Let’s denote the i-th element of permutation p as pi. We’ll call number n the size of permutation p1, p2, …, pn.

Nickolas adores permutations. He likes some permutations more than the others. He calls such permutations perfect. A perfect permutation is such permutation p that for any i (1 ≤ i ≤ n) (n is the permutation size) the following equations hold ppi = i and pi ≠ i. Nickolas asks you to print any perfect permutation of size n for the given n.

Input
A single line contains a single integer n (1 ≤ n ≤ 100) — the permutation size.

Output
If a perfect permutation of size n doesn’t exist, print a single integer -1. Otherwise print n distinct integers from 1 to n, p1, p2, …, pn — permutation p, that is perfect. Separate printed numbers by whitespaces.

Examples
Input
1

Output
-1

Input
2

Output
2 1

Input

Output
2 1 4 3

题意:对1——n个数进行完美排列并输出,若不存在完美排列,输出-1

提示:n若为奇数,不存在完美排列,若存在,完美排列规则为:数列大体顺序顺序保持不变,其中奇数和偶数进行交换


AC代码:


#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,i,a[105];
    while(cin>>n)
    {
        if(n%2==1) cout<<"-1"<<endl;
        else
        {
            for(i=1; i<=n; i++)
                a[i]=i;
            for(i=2; i<=n; i++)
            {
                if(a[i]%2==0) swap(a[i-1],a[i]);
            }
            for(i=1; i<=n; i++)
                printf(i==n?"%d\n":"%d ",a[i]);
        }
    }
    return 0;
}

余生还请多多指教!

猜你喜欢

转载自blog.csdn.net/qq_42847312/article/details/81947550