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

ค้นหาจำนวนอาร์เรย์ย่อยที่มีผลรวมคู่ใน C++


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