Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm giá trị nhỏ nhất được thêm vào để mảng trở nên cân bằng trong C ++

Giả sử chúng ta có một mảng A với n phần tử. Và n là số chẵn. Chúng ta phải tìm giá trị cần cân bằng của mảng. Khi kích thước của mảng bằng nhau, thì chúng ta có thể tạo ra hai nửa. Tổng của nửa bên trái và tổng của nửa bên phải cần được cân bằng. Vì vậy, nếu mảng giống như A =[1, 2, 3, 2, 5, 3] Tổng của nửa bên trái là 6 và tổng của nửa bên phải là 10. vì vậy chúng ta cần 4 để cân bằng mảng.

Nhiệm vụ rất đơn giản, chúng tôi sẽ tìm tổng của nửa thứ nhất và thứ hai, sau đó tìm hiệu số tuyệt đối và trả về.

Ví dụ

#include<iostream>
#include<cmath>
using namespace std;
int getValueToBalance(int a[], int n) {
   int left_sum = 0;
   for (int i = 0; i < n/2; i++)
   left_sum += a[i];
   int right_sum = 0;
   for (int i = n/2; i < n; i++)
   right_sum += a[i];
   return abs(left_sum - right_sum);
}
int main() {
   int arr[] = {1, 2, 3, 2, 5, 3};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "The number for balancing: " << getValueToBalance(arr, n);
}

Đầu ra

The number for balancing: 4