Description
Input
Output
input1
6
7
3 4 5 2 9 1 1
4
9 2 7 1
11
8 4 3 1 2 7 8 7 9 4 2
1
42
2
11 7
8
1 1 1 1 1 1 1 1
output1
3 1 4 1 5 9 2
9 1 2 7
8 2 4 4 3 9 1 7 2 8 7
42
11 7
1 1 1 1 1 1 1 1
input2
1
4
1453324 2 1453324 1
output2
1453324 1 2 1453324
分析
通过给出的数据,我们发现输出的第一个数都是原数据的第一个数,第二个数都是原数据的最后一个数。第三个数是正数的第二个数,下一个数是倒数的第二个数,在下一个是正数的第三个数,下一个又是倒数的第三个数
下面是我的代码,供参考
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <list>
#include <vector>
typedef long long ll;
using namespace std;
int main()
{
std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int n;
cin >> n;
while (n--) {
int m;
cin >> m;
vector<int> vec;
for (int i = 0; i < m; i++) {
int h;
cin >> h;
vec.push_back(h);
}
vector<int> cev;
for (int i = m-1; i >=0; i--) {
cev.push_back(vec[i]);
}
vector<int> v;
int t1 = 0;
int t2 = 0;
for (int i = 0; i < m; i++) {
if (i % 2 == 0) {
v.push_back(vec[t1]);
t1++;
}
else
{
v.push_back(cev[t2]);
t2++;
}
}
for (int i = 0; i < m - 1; i++)
cout << v[i] << " ";
cout << v[m - 1] << endl;
}
return 0;
}