C plus plus寻找平衡点
时间: 2023-09-28 18:10:17 浏览: 49
平衡点是指数组中的一个位置,该位置左边的元素之和等于右边的元素之和。以下是一种C++实现:
```c++
#include <iostream>
using namespace std;
int findBalancePoint(int arr[], int size) {
int sum = 0, leftSum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
for (int i = 0; i < size; i++) {
sum -= arr[i];
if (leftSum == sum) {
return i;
}
leftSum += arr[i];
}
return -1; // 如果没有平衡点,返回-1
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 5, 4, 3, 2, 1};
int size = sizeof(arr) / sizeof(arr[0]);
int balancePoint = findBalancePoint(arr, size);
if (balancePoint == -1) {
cout << "没有平衡点";
} else {
cout << "平衡点在位置 " << balancePoint;
}
return 0;
}
```
在上面的代码中,我们首先计算出整个数组的总和。然后,我们遍历数组,并在每个位置处计算左侧元素的总和。我们使用总和减去当前元素的值来计算右侧元素的总和。如果左侧元素的总和等于右侧元素的总和,则当前位置是平衡点。如果我们遍历整个数组都没有找到平衡点,则返回-1。