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 perfectpermutation 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.
A single line contains a single integer n (1 ≤ n ≤ 100) — the permutation size.
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.
1
-1
2
2 1
4
2 1 4 3
题意: 给一个长度为n的序列p,序列中的元素大小范围为[1,n]且各不相同,现在要求一个完美序列,使得 p[p[i]]=i&&p[i]!=i;
初看很难。仔细一想,假设初始化序列 f[i]=i; 现在只要交换奇偶位置上的元素值就可以了 即 swap(s[i],s[i+1]) (i%2==1) 前提条件是序列的大小为偶数
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <string> #include <vector> using namespace std; int main() { int n; while(cin>>n) { if(n%2) puts("-1"); else for(int i=1;i<=n;i++) if(i%2) cout<<i+1<<" "; else cout<<i-1<<" "; cout<<endl; } return 0; }