麻醉炮弹问题的C++滑动窗口解法
### 🍃思路分析 本题要求找出连续的 `k` 个人的最大危险程度总和。可以使用滑动窗口的方法来解决这个问题。滑动窗口是一种常用的算法技巧,通过维护一个固定大小的窗口在数组上滑动,计算窗口内元素的和,并找出其中的最大值。 ### 💻代码实现 ```cpp #include <iostream> #include <vector> 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]; } // 计算初始窗口的危险程度总和 int currentSum = 0; for (int i = 0; i < k; i++) { currentSum += a[i]; } // 初始化最大危险程度总和为初始窗口的和 int maxSum = currentSum; // 滑动窗口 for (int i = k; i < n; i++) { // 减去窗口最左边的元素 currentSum -= a[i - k]; // 加上窗口最右边的元素 currentSum += a[i]; // 更新最大危险程度总和 maxSum = max(maxSum, currentSum); } // 输出最大危险程度总和 cout << maxSum << endl; return 0; } ``` ### 📝代码解释 1. **输入读取**:首先读取 `n` 和 `k`,然后读取 `n` 个守卫的危险程度,存储在数组 `a` 中。 2. **初始窗口和计算**:计算前 `k` 个守卫的危险程度总和,作为初始窗口的和。 3. **滑动窗口**:从第 `k` 个元素开始,每次将窗口向右移动一位,减去窗口最左边的元素,加上窗口最右边的元素,更新当前窗口的和。 4. **更新最大和**:在每次滑动窗口后,比较当前窗口的和与最大和,更新最大和。 5. **输出结果**:最后输出最大危险程度总和。 ### ⚙️复杂度分析 - **时间复杂度**:$O(n)$,其中 $n$ 是守卫的数量。因为只需要遍历数组一次。 - **空间复杂度**:$O(n)$,主要用于存储守卫的危险程度。 ### 🌟开发建议 - **边界检查**:在实际开发中,应该对输入进行边界检查,确保 `k` 不超过 `n`,避免出现越界错误。 - **代码可读性**:可以添加一些注释来提高代码的可读性,特别是在滑动窗口的部分。 - **错误处理**:可以添加一些错误处理代码,例如当输入不符合要求时输出错误信息。 ######[AI写代码神器 | 672点数解答 | 2026-04-04 19:50:57]
- Python 利用 win32com 库:将 Excel 转换为 A4 横向 PDF 并单独打印首列(字节豆包 | 507点数解答 | 2025-03-10 15:48:12)313
- 浙闽“板凳龙”舞龙队 300 秒螺线盘入:位置与速度全揭秘(阿里通义 | 886点数解答 | 2024-09-07 10:31:31)636
- 浙闽“板凳龙”舞龙队 300 秒位置与速度数学模型揭秘(GPT | 565点数解答 | 2024-09-07 10:32:56)534
- 223节板凳龙沿等距螺线盘入:300秒内位置与速度的数学揭秘 (讯飞星火 | 443点数解答 | 2024-09-07 10:34:10)381
- 浙闽“板凳龙”300秒舞龙轨迹与速度:数学模型揭秘!(字节豆包 | 522点数解答 | 2024-09-07 10:35:06)352
- Excel 销售数据难题:2024 年 Q3 及特定时段销售情况计算全攻略(字节豆包 | 762点数解答 | 2024-11-06 19:11:51)195
- 从封闭到觉醒:中国在西方文化冲击下的曲折蜕变(讯飞星火 | 331点数解答 | 2024-11-30 21:50:57)197
- 陈独秀〈吾人最后之觉悟〉:文化冲突下的觉醒与奋进之路(百度文心 | 458点数解答 | 2024-11-30 21:51:52)205
- 从文化冲突到国民觉悟:中国近代变革的觉醒之路( | 21点数解答 | 2024-11-30 21:52:33)195
- Python:生成含随机缺失值二维数组并处理,附随机选元素赋缺失值代码解析(阿里通义 | 300点数解答 | 2025-03-13 20:19:30)218
- 破解“没有3的世界”:找出第n个合规正整数!(DeepSeek | 471点数解答 | 2025-03-17 14:32:58)254
- C++ 破解“没有 3 的世界”:找出第 n 个特殊正整数!(字节豆包 | 333点数解答 | 2025-03-17 22:48:43)153