ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ซึ่งประกอบด้วยค่าบวก n ค่า งานของเราคือการหา องค์ประกอบ เท่ากับผลรวมขององค์ประกอบที่เหลือทั้งหมด ของอาร์เรย์
คำอธิบายโค้ด: เราต้องหาองค์ประกอบที่มีค่าเท่ากับผลรวมขององค์ประกอบทั้งหมดในอาร์เรย์ ยกเว้นองค์ประกอบนั้น
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล: arr[] ={ 5, 4, 17, 1, 7 }
ผลลัพธ์: 17
คำอธิบาย −
ผลรวมขององค์ประกอบที่เหลือคือ (5 + 4 + 1 + 7 ) =17 ซึ่งเท่ากับองค์ประกอบที่เหลือ 17
แนวทางการแก้ปัญหา -
วิธีแก้ปัญหาอย่างง่ายคือการใช้ข้อเท็จจริงที่ว่าผลรวมขององค์ประกอบทั้งหมดในอาร์เรย์นั้นเป็นสองเท่าขององค์ประกอบที่กำหนด สำหรับสิ่งนี้เราจะทำตามขั้นตอนเหล่านี้
ขั้นตอนที่ 1: หาผลรวมของอิลิเมนต์ทั้งหมดของอาร์เรย์
ขั้นตอนที่ 2: วนซ้ำสำหรับแต่ละองค์ประกอบของอาร์เรย์
ขั้นตอนที่ 2.1: ถ้า arr[i] ==sum/2.
ขั้นตอนที่ 2.1.1: ถ้าเป็นจริง. แฟล็ก =1 หมดห่วง
ขั้นตอนที่ 2.2.1: ถ้าผิดก็ปล่อยไว้
ขั้นตอนที่ 3: ถ้าแฟล็ก ==1 พิมพ์ arr[i]
ขั้นตอนที่ 4: มิฉะนั้น พิมพ์ “ไม่พบองค์ประกอบดังกล่าว ”.
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#include <iostream>
using namespace std;
void findElemenetInArray(int arr[], int n) {
int arraySum = 0;
int flag = 0, i;
for (i = 0; i < n; i++)
arraySum += arr[i];
for (i = 0; i < n; i++)
if ( (2*arr[i]) == arraySum ) {
flag = 1;
break;
}
if(flag)
cout<<arr[i];
else
cout<<"No such element is found!";
}
int main() {
int n = 5;
int arr[n] = { 5, 4, 7, 1, 17 };
findElemenetInArray(arr, n);
return 0;
} ผลลัพธ์
17