c++实现 奇怪国的国民们遵循一个规则——每次来一个人都会报一个数字 a_i ,在他进入队尾后,队伍会执行 ai 次操作,每次队首的人都会被调到队尾去。 现在先后一共有 n个人(根据来的顺序编号为 1,...,n1,...,n)排队,告诉你每个人报的数字,请你输出这个队伍最后的排队情况。 输入格式 第一行一个正整数 n。 第二行 n个正整数 a_1,a2,...,a n 输出格式 n 个数,依次表示从队头到队尾每个人的编号。
时间: 2024-04-15 10:27:40 浏览: 140
数据结构一纸开卷 C++
你好!为了实现这个功能,你可以使用队列来模拟这个过程。首先,你需要读取输入的 n 和每个人报的数字 a_i。然后,你可以创建一个空的队列,并将每个人的编号依次添加到队列中。
接下来,你需要模拟每个人报数并执行相应的操作。你可以使用一个循环来迭代队列中的每个人,并在每次迭代时执行以下操作:
1. 从队列中弹出队首的人。
2. 将该人的编号输出。
3. 将该人重新添加到队列的尾部,重复 a_i 次。
最后,当循环结束后,你就可以得到队伍最后的排队情况。输出队列中剩余的人的编号即可。
下面是一个用 C++ 实现的示例代码:
```cpp
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n;
cin >> n;
queue<int> q;
for (int i = 1; i <= n; i++) {
int a;
cin >> a;
q.push(i);
}
while (!q.empty()) {
int cur = q.front();
q.pop();
cout << cur << " ";
for (int i = 1; i <= cur; i++) {
int front = q.front();
q.pop();
q.push(front);
}
}
return 0;
}
```
希望能帮到你!如果有任何问题,请随时提问。
阅读全文