酷代码 AI
菜单
服务商

题目描述 现在给出一排共 n 只鹅的身高,李白想知道最高的鹅比其他所有鹅高多少、最矮的鹅 比其他所有鹅矮多少。 请输出这两行信息。 输入格式 输入共两行。 第一行一个整数 n 表示鹅的数目。 第二行共 n 个整数 ai(i=1,2,3...n),表示第 i 只鹅的身高。 输出格式 输出共两行。 第一行共 n 个空格隔开的整数,第 i 个整数表示序列中第 i 只鹅比最高的那只鹅要 矮多少。 第二行共 n 个空格隔开的整数,第 i 个整数表示序列中第 i 只鹅比最矮的那只鹅要 高多少。 输入输出样例 输入 #1 6 4 7 8 6 3 2 输出 #1 4 1 0 2 5 6 2 5 6 4 1 0 说明/提示 李白一共有 6 只鹅,最高的一只身高为 8,最矮的一只身高为 2,然后分别作为被减 数和减数参与身高差计算可得结果。 对于 30% 数据,保证 0≤ai≤30,1≤n≤20。 对于 100% 数据,保证 0≤ai≤1018,1≤n≤106。 用c++语言

```cpp #include <iostream> #include <vector> #include <algorithm> int main() { int n; std::cin >> n; std::vector<long long> heights(n); for (int i = 0; i < n; ++i) { std::cin >> heights[i]; } long long maxHeight = *std::max_element(heights.begin(), heights.end()); long long minHeight = *std::min_element(heights.begin(), heights.end()); for (int i = 0; i < n; ++i) { std::cout << maxHeight - heights[i]; if (i < n - 1) { std::cout << " "; } } std::cout << std::endl; for (int i = 0; i < n; ++i) { std::cout << heights[i] - minHeight; if (i < n - 1) { std::cout << " "; } } std::cout << std::endl; return 0; } ``` 代码解释 1. 输入处理: - 首先读取鹅的数量 `n`。 - 接着使用 `std::vector` 存储每只鹅的身高,通过循环将输入的身高数据存入 `heights` 向量。 2. 找出最高和最矮的鹅的身高: - 使用 `std::max_element` 函数找出 `heights` 向量中的最大值,即最高鹅的身高 `maxHeight`。 - 使用 `std::min_element` 函数找出 `heights` 向量中的最小值,即最矮鹅的身高 `minHeight`。 3. 输出每只鹅与最高鹅的身高差: - 遍历 `heights` 向量,计算每只鹅与最高鹅的身高差并输出,相邻的差值用空格分隔。 4. 输出每只鹅与最矮鹅的身高差: - 再次遍历 `heights` 向量,计算每只鹅与最矮鹅的身高差并输出,相邻的差值用空格分隔。 复杂度分析 - 时间复杂度:$O(n)$,主要是遍历向量和查找最大最小值的操作。 - 空间复杂度:$O(n)$,主要用于存储每只鹅的身高。 [2025-11-16 20:19:06 | AI问答 | 549点数解答]

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