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

数组平衡点下标查找的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; } } // 若没有找到平衡点,输出-1 cout << -1 << endl; return 0; } ``` ### 代码解释 1. **输入部分**:首先读取整数`n`,接着读取`n`个整数并存储在数组`a`中。 2. **前缀和计算**:通过循环计算前缀和数组`sum1`,`sum1[i]`表示从`a[1]`到`a[i]`的所有元素之和。 3. **后缀和计算**:通过循环计算后缀和数组`sum2`,`sum2[i]`表示从`a[i]`到`a[n]`的所有元素之和。 4. **查找平衡点**:遍历数组,对于每个下标`i`,检查`sum1[i - 1]`是否等于`sum2[i + 1]`,如果相等,则`i`就是平衡点的下标,输出该下标并结束程序。 5. **未找到平衡点**:若遍历完整个数组都没有找到平衡点,输出 -1。 ######[AI问答 | 556点数解答 | 2026-08-01 20:17:00]

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