酷代码 AI
菜单
服务商

C++实现寻找数组中操作后最大出现次数的数字

```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; // 主函数 int main() { int n, k; // 读取数组元素数量 n 和允许的操作次数 k cin >> n >> k; vector<int> a(n); // 读取数组元素 for (int i = 0; i < n; ++i) { cin >> a[i]; } // 对数组进行排序 sort(a.begin(), a.end()); int maxCount = 0; int resultNumber = 0; // 遍历数组 for (int r = 0; r < n; ++r) { for (int l = 0; l <= r; ++l) { long long cost = 0; // 计算将区间 [l, r] 内的元素都变为 a[r] 所需的操作次数 for (int i = l; i < r; ++i) { cost += a[r] - a[i]; } // 如果操作次数不超过 k if (cost <= k) { int currentCount = r - l + 1; // 更新最大出现次数和对应的数字 if (currentCount > maxCount || (currentCount == maxCount && a[r] < resultNumber)) { maxCount = currentCount; resultNumber = a[r]; } } } } // 输出结果 cout << maxCount << " " << resultNumber << endl; return 0; } ``` ### 代码解释: 1. **输入读取**:首先读取数组元素数量 `n` 和允许的操作次数 `k`,然后读取数组元素并存储在 `vector` 中。 2. **排序**:对数组进行排序,方便后续计算。 3. **双重循环遍历**:外层循环遍历数组的每个元素作为右边界 `r`,内层循环遍历从 0 到 `r` 的每个元素作为左边界 `l`。 4. **计算操作成本**:对于每个区间 `[l, r]`,计算将区间内所有元素变为 `a[r]` 所需的操作次数。 5. **更新结果**:如果操作次数不超过 `k`,则更新最大出现次数和对应的数字。 6. **输出结果**:最后输出最大出现次数和对应的数字。 ######[AI问答 | 577点数解答 | 2026-04-04 20:08:00]

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