酷代码 AI
菜单
服务商

用 C++ 解决计算连续相等数个数问题

以下是一个用 C++ 编写的程序,用于解决乌拉乎的问题。该程序的主要功能是对于给定的一组数(数量少于 100),计算以每个数作为终点时,有多少个连续相等的数。 ```cpp #include <iostream> #include <vector> // 函数用于计算以每个数作为终点时连续相等数的个数 std::vector<int> countConsecutiveEqual(const std::vector<int>& numbers) { int n = numbers.size(); std::vector<int> result(n, 1); // 初始化结果数组,每个元素初始值为 1 // 遍历数组,从第二个元素开始 for (int i = 1; i < n; ++i) { if (numbers[i] == numbers[i - 1]) { // 如果当前元素和前一个元素相等,则更新当前元素的连续相等数个数 result[i] = result[i - 1] + 1; } } return result; } int main() { int n; std::cout << "请输入数的个数(n < 100): "; std::cin >> n; // 检查输入的数的个数是否小于 100 if (n >= 100) { std::cout << "输入的数的个数必须小于 100。" << std::endl; return 1; } std::vector<int> numbers(n); std::cout << "请输入 " << n << " 个数: "; for (int i = 0; i < n; ++i) { std::cin >> numbers[i]; } // 调用函数计算连续相等数的个数 std::vector<int> consecutiveCounts = countConsecutiveEqual(numbers); // 输出结果 std::cout << "以每个数作为终点的连续相等数的个数为: "; for (int count : consecutiveCounts) { std::cout << count << " "; } std::cout << std::endl; return 0; } ``` ### 代码解释: 1. **`countConsecutiveEqual` 函数**: - 该函数接受一个整数向量 `numbers` 作为参数,返回一个整数向量 `result`,其中 `result[i]` 表示以 `numbers[i]` 作为终点的连续相等数的个数。 - 首先,初始化 `result` 数组,每个元素的初始值为 1,因为每个数至少有一个连续相等的数(即它本身)。 - 然后,从第二个元素开始遍历数组,如果当前元素和前一个元素相等,则将当前元素的连续相等数个数更新为前一个元素的连续相等数个数加 1。 2. **`main` 函数**: - 首先,提示用户输入数的个数 `n`,并检查 `n` 是否小于 100。如果 `n` 不小于 100,则输出错误信息并终止程序。 - 接着,提示用户输入 `n` 个数,并将这些数存储在 `numbers` 向量中。 - 调用 `countConsecutiveEqual` 函数计算连续相等数的个数,并将结果存储在 `consecutiveCounts` 向量中。 - 输出以每个数作为终点的连续相等数的个数。 ### 复杂度分析: - **时间复杂度**:$O(n)$,其中 $n$ 是输入数组的长度。因为只需要遍历数组一次。 - **空间复杂度**:$O(n)$,主要用于存储结果数组。 ######[AI问答 | 855点数解答 | 2026-03-21 19:57:08]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]