首页 > 试题广场 >

操作序列

[编程题]操作序列
  • 热度指数:145 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作:
1、将a_i放入b序列的末尾
2、逆置b序列
小易需要你计算输出操作n次之后的b序列。

输入描述:
输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。
第二行包括n个整数a_i(1 ≤ a_i ≤ 10^9),即序列a中的每个整数,以空格分割。


输出描述:
在一行中输出操作n次之后的b序列,以空格分割,行末无空格。
示例1

输入

4
1 2 3 4

输出

4 2 1 3
#include <bits/stdc++.h> 
using namespace std;
 
int main()
{
    long long n;
    cin >> n;
    vector<long long> res(n);
    vector<long long> result(n);
    for(long long i = 0; i < n; ++i)
        cin >> res[i];
    long long left = 0;
    long long right = n - 1;
    bool flag = true;
    for(long long i = n - 1; i >= 0; --i)
    {
        if(flag)
        {
            result[left] = res[i];
            ++left;
            flag = false;
            continue;
        }
        else{
            result[right] = res[i];
            --right;
            flag = true;
            continue;
        }
    }
    for(long long i = 0; i < n -1; ++i)
        cout << result[i] << " ";
    cout << result[n-1] << endl;
    return0;
}

发表于 2018-08-08 19:19:07 回复(0)
就是就是就是你
发表于 2022-12-08 14:40:25 回复(0)

找规律,从后向前隔一个输出,再顺序输出

n = int(raw_input())
l1 = raw_input().split()
l1 = map(int, l1)
for i in range(n-1,-1,-2):
    print l1[i],
    l1[i] = 's'
for i in l1:
    if i != 's':
        print i,
发表于 2018-08-09 22:32:13 回复(0)