C++ 区间求和问题:前缀和实现与下标处理详解
这个问题是一个典型的区间求和问题。给定一个数组,对多次询问(区间 `[L, R]`)求区间内所有元素的和。需要注意下标是从1开始的。 下面是C++的实现代码,包含详细 ```cpp #include <iostream> #include <vector> using namespace std; int main() { int n, q; cin >> n >> q; // 读取花的数量和询问次数 vector<int> a(n + 1); // 使用1-based索引,所以大小为n+1 for (int i = 1; i <= n; i++) { cin >> a[i]; // 读取每朵花的鲜艳值 } // 构建前缀和数组 vector<int> prefix(n + 1, 0); for (int i = 1; i <= n; i++) { prefix[i] = prefix[i - 1] + a[i]; } // 处理每次询问 for (int i = 0; i < q; i++) { int L, R; cin >> L >> R; // 区间[L, R]的和 = prefix[R] - prefix[L-1] cout << prefix[R] - prefix[L - 1] << endl; } return 0; } ``` ### 🧠 代码解释 1. **输入读取**:先读入 `n` 和 `q`。 2. **数组存储**:用 `a[1]` 到 `a[n]` 存储花的鲜艳值,下标从1开始便于后续计算。 3. **前缀和数组**:`prefix[i]` 表示从第1朵花到第i朵花的总和。 4. **回答询问**:区间 `[L, R]` 的和 = `prefix[R] - prefix[L - 1]`,每次询问输出一行结果。 ### ⚠️ 注意点 - 如果 `L` 和 `R` 从1开始,则 `prefix[0]` 必须初始化为0,否则区间 `[1, R]` 会出错。 - 数据范围保证 `n, q < 100`,用 `int` 类型足够存储总和。 - 输入中可能有空格或换行,`cin` 会自动处理。 ######[AI问答 | 519点数解答 | 2026-06-06 14:22:16]
- Python实现:随机录入45位学生四次成绩函数大揭秘(GPT | 477点数解答 | 2024-12-17 17:00:35)382
- Python实现班级45位同学成绩生成、总评计算及分数统计(字节豆包 | 579点数解答 | 2024-12-21 11:55:01)272
- Python实现45位学生四次成绩随机录入及输出(GPT | 441点数解答 | 2024-12-21 21:02:22)277
- Python实战:45位同学成绩生成、总评计算与分数统计揭秘(字节豆包 | 688点数解答 | 2024-12-22 10:14:17)265
- C++ 高效计算序列中递增三元组数量:从 O(n^2) 到 O(n log n) 的优化之路(DeepSeek | 742点数解答 | 2025-02-25 18:35:56)310
- C++ 求解序列中递增三元组数量:动态规划实现与复杂度分析(DeepSeek | 631点数解答 | 2025-02-25 18:40:05)251
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)271
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)412
- CentOS下Java进程出现futex_wait_queue_me问题的处理全流程(阿里通义 | 283点数解答 | 2023-11-20 14:51:26)506
- 替雷利珠单抗致免疫相关性糖尿病:病例报道与机制探讨,为临床用药敲响警钟( | 164点数解答 | 2024-10-11 14:52:52)301
- Python 代码转 C++:计算花朵鲜艳值总和(字节豆包 | 408点数解答 | 2026-04-19 21:50:57)33
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)373