【题目描述】 小瓜现在让1 到n 这n 个整数排成一列,但是他只告诉你每个整数的后面那个数是什么(最后一个整数的后面那个数是0 ),请你帮忙复原这个队列。 【输入】 第一行一个整数n (n≤100000 ),表示有n 个整数。接下来n 行,每行两个数i ,j ,表示排在整数i 后面的那个数是j 。 【输出】 n 行,每行一个整数,表示完整的队列。 【输入样例】 3 1 2 2 3 3 0 【输出样例】 1 2 3C++
时间: 2024-04-13 16:28:50 浏览: 102
将一个整数S随机拆分为N个在min~max之间的整数.txt
题目描述中给出了一个问题,需要根据每个整数的后面一个数来复原整数队列。输入包含 n 行,每行两个整数,表示排在整数 i 后面的那个数是 j。最后一个整数的后面那个数是 0。现在需要输出完整的队列。
要解决这个问题,我们可以使用一个数组来保存每个整数的后面一个数,然后从最后一个整数开始,依次找到它的前面一个数,直到找到第一个整数。
具体做法如下:
1. 定义一个长度为 n 的数组 queue,初始化为 0。
2. 从输入中读取每行的两个整数 i 和 j,并将 j 保存在 queue[i-1] 中。
3. 从 n 开始倒序遍历数组 queue。
- 在每一次循环中,输出当前遍历到的数字。
- 将当前数字作为索引,找到它在 queue 中对应的下一个数字。
4. 输出完成。
下面是使用 C++ 编写的代码实现上述算法:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> queue(n, 0);
for (int i = 0; i < n; i++) {
int num, next;
cin >> num >> next;
queue[num - 1] = next;
}
for (int i = n - 1; i >= 0; i--) {
cout << queue[i] << endl;
}
return 0;
}
```
这段代码首先读取输入的 n,然后定义一个长度为 n 的数组 queue,初始化为 0。
接下来,使用循环遍历输入的每一行,将每个整数的后面一个数保存在 queue 数组中对应的位置。
然后,从 n 开始倒序遍历数组 queue,在每一次循环中输出当前遍历到的数字。
最后,输出完成。
希望对你有帮助!如果你有任何问题,请随时提问。
阅读全文