输出倒叙输出这N个整数,使用换行间隔样例输入6139263样例输出362931这个逆序输出C++怎么做啊,正常思路会时间超限#include <iostream>

题目描述

已知N个整数Ai,请你进行逆序输出。
输入

第一行一个整数N,表示接下来有N个数字。
接下来N行,每行一个整数Ai,表示第i个数字为Ai。
1 <= N <= 105; 0 <= Ai <= 105;
输出

倒叙输出这N个整数,使用换行间隔
样例输入
6
1
3
9
2
6
3
样例输出
3
6
2
9
3
1

这个逆序输出C++怎么做啊,正常思路会时间超限

#include <iostream>
using namespace std;

void a(int idx) {
    int num;
    cin >> num;
    
    if (idx > 0) {
        a(idx - 1);
    }
    
    cout << num << endl;
}

int main() {
    int N;
    cin >> N;
    
    a(N);
    
    return 0;
}


这样也不行

#include <iostream>
using namespace std;

int main() {
    int N;
    cin >> N;
    
    int nums[N];
    for (int i = 0; i < N; i++) {
        cin >> nums[i];
    }
    
    for (int i = N - 1; i >= 0; i--) { 
        cout << nums[i] << endl;
    }
    
    return 0;
}


你的程序没有看出什么问题,这简单的循环也不应该超时,是不是oj系统有问题。

乍看起来c++的cin、cout、ifstream、ofstream、istringstream、ostringstream在输入、输出上比c的scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf简单,不用格式控制符!
但是不用格式控制符,输入输出恰好是你期望的格式的时候好说;等到输入输出不是你期望的格式的时候,你就会觉得还是用格式控制符更方便、更靠谱。
摒弃cin、cout、ifstream、ofstream、istringstream、ostringstream!
使用scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf。

你试试这个?

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    int N;
    std::cin >> N;
    
    std::vector<int> nums(N);
    for (int i = 0; i < N;++i) {
        std::cin >> nums[i];
    }
    
    std::reverse(nums.begin(), nums.end());
    
    for (int i = 0; i < N; ++i) {
        std::cout << nums[i] << std::endl;
    }
    
    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7666426
  • 以下回答来自chatgpt:

    对于这个问题的具体解决方案已经给出了,使用C++编写代码逆序输出N个整数。如果没有其他方面的帮助需求,那么问题已经解决了。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^