酷代码 AI
菜单
服务商

有N个人排成一排,假设他们的身高均为正整数,请找出其中符合以下条件的人:排在他前面且比它高的人数与排在他后面且比他高的人数相等 输入 第一行为一个正整数 𝑁 , 1 ≤ 𝑛 ≤ 1000 ,表示有多少人。 下面N行,每行一个正整数,表示从前往后每个人的身高,假设每个人的身高 ≤ 100 . 输出 一行一个整数,表示满足这个条件的人数(c++)

以下是解决该问题的C++代码: ```cpp #include <iostream> using namespace std; int main() { int n; // 读取总人数 cin >> n; int heights[1000]; int count = 0; // 读取每个人的身高 for (int i = 0; i < n; i++) { cin >> heights[i]; } // 遍历每个人 for (int i = 0; i < n; i++) { int frontTaller = 0; int backTaller = 0; // 统计前面比当前人高的人数 for (int j = 0; j < i; j++) { if (heights[j] > heights[i]) { frontTaller++; } } // 统计后面比当前人高的人数 for (int j = i + 1; j < n; j++) { if (heights[j] > heights[i]) { backTaller++; } } // 判断前面比他高的人数和后面比他高的人数是否相等 if (frontTaller == backTaller) { count++; } } // 输出满足条件的人数 cout << count << endl; return 0; } ``` 代码解释: 1. 输入处理:首先读取总人数`n`,然后读取每个人的身高并存储在数组`heights`中。 2. 遍历每个人:对于数组中的每个人,分别统计排在他前面且比他高的人数`frontTaller`和排在他后面且比他高的人数`backTaller`。 3. 判断条件:如果`frontTaller`和`backTaller`相等,则满足条件,计数器`count`加1。 4. 输出结果:最后输出满足条件的人数。 复杂度分析: - 时间复杂度:$O(n^2)$,其中$n$是人数。因为对于每个人都需要遍历前面和后面的所有人。 - 空间复杂度:$O(n)$,主要用于存储每个人的身高。 [2026-02-06 20:56:26 | AI问答 | 508点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多