Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาค่าต่ำสุดที่จะเพิ่มเพื่อให้อาร์เรย์มีความสมดุลใน C++


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