构造原始数列 有道2017测试开发工程师编程题

 1 #include <iostream>
 2 #include <vector>
 3 #include <deque>
 4 #include <queue>
 5 using namespace std;
 6 
 7 // 2 1 3
 8 // 1 3 2,输出1
 9 // 3 2
10 // 2 3,输出2
11 // 3
12 // 3,输出3
13 // 逆向过程:
14 // 3
15 // 3
16 // 2 3,把2插到队头
17 // 3 2,把队尾3插到队头
18 // 1 3 2,把1插到队头
19 // 2 1 3,把队尾2插到队头
20 // 通过观察就是:
21 // k从n~1,依次进行:把k插到队头,把队尾元素插到队头
22 
23 //得到顺序序列的过程是:
24 //1、队头pop出来,push进队尾
25 //2、队头pop出来,打印结果
26 //举例:
27 //2 1 3,输入
28 //1 3 2,队头2pop出来插入队尾
29 //打印1,队头1pop出来,打印1
30 //3 2
31 //2 3,队头3pop出来插入队尾
32 //打印2,队头2pop出来,打印2
33 //3
34 //3,队头3pop出来插入队尾
35 //打印3,队头3pop出来,打印3
36 //队列为空,处理完毕
37 
38 //逆向过程:从n~1依次做如下处理
39 //1、push元素进队头
40 //2、队尾元素pop出来,push进队头
41 //举例:
42 //3,push3进队头
43 //3,队尾3pop出来,push3进队头
44 //23,push2进队头
45 //32,队尾3pop出来,push3进队头
46 //132,push1进队头
47 //213,队尾2pop出来,push2进队头
48 //处理完毕
49 
50 int main()
51 {
52   int t;
53   cin >> t;
54 
55   // queue<int> num;
56   // while (t--)
57   // {
58   //   int temp;
59   //   cin >> temp;
60   //   num.push(temp);
61   // }
62   while (t--)
63   {
64     // while (!num.empty())
65     // {
66     // int n;
67     // n = num.front();
68     // num.pop();
69 
70     int n;
71     cin >> n;
72     deque<int> q;
73     for (int i = n; i > 0; i--)
74     {
75       q.push_front(i);
76       int x = q.back();
77       q.pop_back();
78       q.push_front(x);
79     }
80     for (int i = 0; i < n - 1; i++)
81     {
82       cout << q[i] << " ";
83     }
84     cout << q[n - 1];
85     cout << endl;
86     
87     // }
88   }
89 }
原文地址:https://www.cnblogs.com/hslzju/p/5783260.html