数组逆序重存放

GitHub跳转原题关系图返回列表

读入 n 个整数后按逆序输出:用下标从 n 倒到 1 的循环直接打印,O(1) 额外空间。

OJ: roj

题目 ID: 1105

难度:入门

标签:数组输入输出python

创建: 2026-09-29 19:03

更新: 2026-10-05 01:15

题目描述

把数组按逆序重新存放,例如 8 6 5 4 1 改为 1 4 5 6 8。输入两行:元素个数 nn(1<n<1001<n<100)与 nn 个整数,之间用空格分隔;输出为一行逆序后的 nn 个整数,之间用空格分隔。 样例:

text
输入:5  /  8 6 5 4 1
输出:1 4 5 6 8

思路

读入到数组 a[1…n],i 从 n 倒到 1 直接打印 a[i],元素之间补一个空格。

参考代码

Python 版:

python
#!/usr/bin/env python3
# Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
# rbook: -> https://rbook.roj.ac.cn  https://rbook2.roj.ac.cn
# rainboy的学习导航网站: https://idx.roj.ac.cn
# create_at: 2026-09-29 19:03
# update_at: 2026-09-29 19:07

import sys


def solve() -> None:
    """把第二行读到的数组倒着输出,元素之间用空格分隔。"""
    data = iter(map(int, sys.stdin.buffer.read().split()))
    n = next(data)  # 题面的元素个数,与后面 token 数一致,仅作读入说明
    values = [next(data) for _ in range(n)]
    print(*reversed(values))  # print 的 sep=' ' 正好对上题面要求的空格分隔


if __name__ == "__main__":
    solve()

C++ 版(同一算法):

cpp
#include <iostream>
using namespace std;
typedef long long ll;

/**
 * Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
 * rbook: -> https://rbook.roj.ac.cn  https://rbook2.roj.ac.cn
 * rainboy的学习导航网站: https://idx.roj.ac.cn
 * create_at: 2026-10-05 01:15
 * update_at: 2026-10-05 01:15
 */

// 数组逆序重存放:读入 n 和 n 个整数,逆序输出

const int MAXN = 105; // 题目 n<100,开 105 足够
int a[MAXN];
int n;

int main() {
    // 读入 n 与数组
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }

    // 逆序输出:i 从 n 倒着遍历到 1
    for (int i = n; i >= 1; i--) {
        if (i != n) cout << ' ';
        cout << a[i];
    }
    cout << '\n';

    return 0;
}