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

โปรแกรม C++ หาดัชนีอาร์เรย์ที่มีจำนวนเลขคู่หรือเลขคี่เท่ากันทั้งสองข้าง


การค้นหาดัชนีอาร์เรย์ที่มีจำนวนเลขคู่หรือเลขคี่เท่ากันทั้งสองข้าง หมายถึงตำแหน่งที่มีจำนวนเลขคู่หรือเลขคี่ด้านซ้ายและด้านขวาเท่ากัน

นี่คือคำจำกัดความที่เกี่ยวข้องกับแนวคิดนี้:

  • อาร์เรย์ (Array) — ตู้เก็บข้อมูลที่มีชนิดข้อมูลเหมือนกัน
  • ดัชนีอาร์เรย์ (Array Index) — ตำแหน่งของสมาชิกในอาร์เรย์ เริ่มจาก 0 เสมอ
  • เลขคู่ (Even number) — เลขที่หารด้วย 2 ลงตัว
  • เลขคี่ (Odd number) — เลขที่หารด้วย 2 ไม่ลงตัว

จำนวนเต็มทุกจำนวนจะเป็นเลขคู่หรือเลขคี่

ตัวอย่างเพื่อให้เข้าใจง่ายขึ้น:

Input: arr[] = {4, 3, 2, 1, 2} Output : 2

คำอธิบาย

ที่ดัชนี 2 มีเลขคี่ 1 ตัวทางด้านซ้าย และเลขคี่ 1 ตัวทางด้านขวา

เรามีอาร์เรย์ของจำนวนเต็ม n ตัว ต้องการหาดัชนีของสมาชิกที่ทำให้:

  • จำนวนเลขคู่ทางด้านซ้ายเท่ากับจำนวนเลขคู่ทางด้านขวา หรือ
  • จำนวนเลขคี่ทางด้านซ้ายเท่ากับจำนวนเลขคี่ทางด้านขวา

หากไม่มีเงื่อนไขนี้ให้พิมพ์ -1 หากมีให้พิมพ์ดัชนีนั้น

อัลกอริทึม

เพื่อคำนวณดัชนีที่มีจำนวนเลขคู่หรือเลขคี่เท่ากันทั้งสองข้าง เราต้องนับจำนวนสมาชิกทางซ้ายและทางขวาของสมาชิกแต่ละตัว

อาร์เรย์ arr[] ที่มี n สมาชิก

ขั้นตอนที่ 1: สำหรับ i จาก 0 ถึง n-1 ทำขั้นตอน 2-5:
ขั้นตอนที่ 2: กำหนด e_l, o_l, e_r, o_r = 0
ขั้นตอนที่ 3: สำหรับ j จาก 0 ถึง i-1
    ขั้นตอนที่ 3.1: นับค่า e_l และ o_l
ขั้นตอนที่ 4: สำหรับ j จาก i+1 ถึง n-1
    ขั้นตอนที่ 4.1: นับค่า e_r และ o_r
ขั้นตอนที่ 5: ถ้า (e_l == e_r) หรือ (o_l == o_r) ให้พิมพ์ i

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

int main() {
    int arr[] = {4, 3, 2, 1, 2};
    int n = 5;
    cout << "The array is : ";
    for(int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << "\nThe index of the element with the same count of even or odd numbers on both sides = ";
    for (int i = 0; i < n; i++) {
        int o_l = 0, e_l = 0;
        int o_r = 0, e_r = 0;
        for (int j = 0; j < i; j++) {
            if (arr[j] % 2 == 0)
                e_l++;
            else
                o_l++;
        }
        for (int k = n - 1; k > i; k--) {
            if (arr[k] % 2 == 0)
                e_r++;
            else
                o_r++;
        }
        if (e_r == e_l || o_r == o_l)
            cout << i << endl;
    }
    return 0;
}

ผลลัพธ์

The array is : 4 3 2 1 2
The index of the element with the same count of even or odd numbers on both sides = 2