(Codeforces Round #136 (Div. 2))A. Little Elephant and Function(递归分析,简单)

A. Little Elephant and Function
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

The Little Elephant enjoys recursive functions.

This time he enjoys the sorting function. Let a is a permutation of an integers from 1 to n, inclusive, and ai denotes the i-th element of the permutation. The Little Elephant's recursive function f(x), that sorts the first x permutation's elements, works as follows:

  • If x = 1, exit the function.
  • Otherwise, call f(x - 1), and then make swap(ax - 1, ax) (swap the x-th and (x - 1)-th elements of a).

The Little Elephant's teacher believes that this function does not work correctly. But that-be do not get an F, the Little Elephant wants to show the performance of its function. Help him, find a permutation of numbers from 1 to n, such that after performing the Little Elephant's function (that is call f(n)), the permutation will be sorted in ascending order.

Input

A single line contains integer n (1 ≤ n ≤ 1000) — the size of permutation.

Output

In a single line print n distinct integers from 1 to n — the required permutation. Numbers in a line should be separated by spaces.

It is guaranteed that the answer exists.

Sample test(s)
Input
1
Output
1 
Input
2
Output
2 1 


模拟一下即可。假设满足题意的数列为a1, a2, a3, a4,...,an,由an到a1依次执行递归函数后,得到的数列为: a2, a3, ...,an,a1.也就是说只是把原数列的头元素掉到最后面。递归函数要得到一个递增序列,就是1,2,3,...,n,那么原数列就自然是n,1,2,...,n-1,这样把头元素调到最后面就是所要求的序列。

AC CODE

 1 #include <iostream>
 2 #include <string>
 3 #include <cstdio>
 4 #include <cmath>
 5 #include <cstring>
 6 #include <algorithm>
 7 #include <vector>
 8 #define LL long long
 9 #define MAXI 2147483647
10 #define MAXL 9223372036854775807
11 #define eps (1e-8)
12 #define dg(i) cout << "*" << i << endl;
13 using namespace std;
14 
15 int main()
16 {
17     int n;
18     while(scanf("%d", &n) != EOF)
19     {
20         printf("%d ", n);
21         for(int i = 1; i < n - 1; i++)
22             printf("%d ", i);
23         if(n != 1) printf("%d\n", n - 1);
24     }
25     return 0;
26 }


原文地址:https://www.cnblogs.com/cszlg/p/2910460.html