สมมติว่าเรามีอาร์เรย์ A ที่มีองค์ประกอบ n และ n เป็นเลขคู่ เราต้องหาค่าที่ต้องการสร้างสมดุลให้กับอาร์เรย์ เนื่องจากขนาดของอาร์เรย์เท่ากัน เราจึงสามารถสร้างสองส่วนได้ ผลรวมของครึ่งซ้ายและผลรวมของครึ่งขวาจะต้องสมดุลกัน ดังนั้นหากอาร์เรย์เป็นเหมือน A =[1, 2, 3, 2, 5, 3] ผลรวมของครึ่งซ้ายคือ 6 และผลรวมของครึ่งขวาคือ 10 เราจึงต้องใช้ 4 เพื่อให้อาร์เรย์สมดุล
งานนี้ง่าย เราจะหาผลรวมของครึ่งแรกและครึ่งหลัง จากนั้นหาผลต่างสัมบูรณ์และผลตอบแทน
ตัวอย่าง
#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);
} ผลลัพธ์
The number for balancing: 4