สมมติว่าเรามีอาร์เรย์ 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