构造原始数列 有道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 }
-------------------------------------------------
原创博客 转载请注明出处http://www.cnblogs.com/hslzju
-------------------------------------------------