ในปัญหานี้ เราได้รับอาร์เรย์ 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