ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ที่ประกอบด้วยองค์ประกอบ N งานของเราคือค้นหาอาร์เรย์ย่อยด้วยผลรวมคู่
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
arr[] ={2, 1, 3, 4, 2, 5}
ผลลัพธ์
28
คำอธิบาย
อาร์เรย์ย่อยคือ −
<ก่อน>{2}, {4}, {2}, {2, 4}, {2, 2}, {1, 3}, {1, 5}, {3, 5}, {4, 2} , {2, 1, 3}, {2, 1, 5}, {2, 3, 5}, {2, 4, 2}, {1, 3, 4}, {1, 3, 2}, { 1, 4, 5}, {1, 2, 5}, {3, 4, 5}, {3, 2, 5}, {2, 1, 3, 4}, {2, 1, 3, 2} , {2, 3, 4, 5}, {2, 3, 2, 5}, {2, 4, 2, 5}, {1, 3, 4, 2}, {1, 4, 2, 5} , {3, 4, 2, 5}, {2, 1, 3, 4, 2}, {2, 1, 3, 4, 2, 5}แนวทางการแก้ปัญหา
วิธีแก้ปัญหาอย่างง่ายคือการใช้วิธีการตรง ซึ่งก็คือการคำนวณอาร์เรย์ย่อยทั้งหมดและผลรวมของอาร์เรย์ย่อย และจำนวนที่เพิ่มขึ้นสำหรับอาร์เรย์ย่อยด้วยผลรวมคู่ และสุดท้ายนับกลับ
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#includeใช้เนมสเปซ std;int countEvenSumSubArray(int arr[], int n){ int evenSumCount =0, sum =0; สำหรับ (int i=0; i<=n-1; i++){ ผลรวม =0; สำหรับ (int j=i; j<=n-1; j++){ ผลรวม +=arr[j]; ถ้า (ผลรวม % 2 ==0) evenSumCount++; } } return (evenSumCount);}int main(){ int arr[] ={2, 1, 4, 2}; int n =sizeof (arr) / sizeof (arr[0]); cout<<"การนับ Subarrays ที่มีผลรวมเป็นคู่คือ "< ผลลัพธ์
จำนวนคำตอบของสมการเชิงเส้นคือ 8