酷代码 AI
菜单
服务商

C++ 实现寻找数组平衡点下标

以下是实现该功能的 C++ 代码: ```cpp #include <iostream> using namespace std; int n; int a[100010]; int sum1[100010]; // sum1为前缀和数组 int sum2[100010]; // sum2为后缀和数组 int main() { // 读取整数 n cin >> n; // 读取数组元素 for (int i = 1; i <= n; i++) { cin >> a[i]; } // 计算前缀和 for (int i = 1; i <= n; i++) { sum1[i] = sum1[i - 1] + a[i]; } // 计算后缀和 for (int i = n; i >= 1; i--) { sum2[i] = sum2[i + 1] + a[i]; } // 寻找平衡点 for (int i = 1; i <= n; i++) { if (sum1[i - 1] == sum2[i + 1]) { cout << i << endl; return 0; } } // 若未找到平衡点 cout << -1 << endl; return 0; } ``` ### 代码解释: 1. **输入处理**:首先读取整数 `n`,表示数组的长度。然后读取 `n` 个整数,存储在数组 `a` 中。 2. **前缀和计算**:使用 `sum1` 数组计算前缀和,`sum1[i]` 表示数组前 `i` 个元素的和。 3. **后缀和计算**:使用 `sum2` 数组计算后缀和,`sum2[i]` 表示数组从第 `i` 个元素到最后一个元素的和。 4. **寻找平衡点**:遍历数组,对于每个下标 `i`,检查 `sum1[i - 1]` 是否等于 `sum2[i + 1]`。如果相等,则 `i` 就是平衡点的下标,输出该下标并结束程序。 5. **未找到平衡点**:如果遍历完整个数组都没有找到平衡点,则输出 -1。 ######[AI问答 | 533点数解答 | 2026-05-30 16:22:27]

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