酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

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]

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