题目描述
已知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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:对于这个问题的具体解决方案已经给出了,使用C++编写代码逆序输出N个整数。如果没有其他方面的帮助需求,那么问题已经解决了。