小朋友的座位号是 � n 以内的正整数,座位从左到右按照编号排开。现在给出小朋友的就坐顺序,你需要输出每个小朋友坐下时他左边和右边最近一个有小朋友的座位。如果某一边没有小朋友,输出 0 0。c++代码
时间: 2024-03-24 19:38:56 浏览: 107
以下是C++的代码实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
vector<int> left(n), right(n);
int last = -1;
for (int i = 0; i < n; i++) {
if (nums[i] == 1) {
last = i;
}
left[i] = last;
}
last = n;
for (int i = n - 1; i >= 0; i--) {
if (nums[i] == 1) {
last = i;
}
right[i] = last;
}
for (int i = 0; i < n; i++) {
cout << (left[i] == -1 ? 0 : i - left[i]) << " ";
cout << (right[i] == n ? 0 : right[i] - i) << endl;
}
return 0;
}
```
思路是先遍历一遍数组,记录每个小朋友左边最近一个有小朋友的座位,再逆序遍历一遍数组,记录每个小朋友右边最近一个有小朋友的座位,最后输出每个小朋友左右两边的距离。
阅读全文
相关推荐











