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

หาองค์ประกอบทั่วไปในอาร์เรย์เรียงลำดับ 3 อาร์เรย์ใน C++

สมมติว่ามีอาร์เรย์ 3 อาร์เรย์ที่มีองค์ประกอบบ้าง เราต้องหาองค์ประกอบทั่วไปทั้งหมดที่มีอยู่ในอาร์เรย์ทั้งสาม สมมติว่าองค์ประกอบเหล่านี้คือ [10, 12, 15, 20, 25], [10, 12, 13, 15] และ [10, 12, 15, 24, 25, 26] องค์ประกอบทั่วไปในอาร์เรย์ทั้งสามคือ 10, 12 และ 15

สมมติว่าองค์ประกอบปัจจุบันที่กำลังเดินทางในอาร์เรย์ A1 เป็น x, A2 เป็น y และ A3 เป็น z เราสามารถมีกรณีต่อไปนี้สำหรับพวกเขา:

  • ถ้า x, y และ z เหมือนกัน เราจะพิมพ์ตัวใดตัวหนึ่ง และเพิ่มดัชนีของแต่ละอาร์เรย์ขึ้น 1
  • เมื่อ x < y เราจะเลื่อนไปข้างหน้าใน A1 เนื่องจาก x ไม่สามารถเป็นองค์ประกอบทั่วไปได้
  • เมื่อ x > z และ y > z เราจะเลื่อนไปข้างหน้าสำหรับ A3 เนื่องจาก z ไม่สามารถเป็นองค์ประกอบทั่วไปได้

ตัวอย่าง

#include <iostream> 
using namespace std; 

void findCommonValues(int A1[], int A2[], int A3[], int n1, int n2, int n3) {
    int i = 0, j = 0, k = 0;
    while (i < n1 && j < n2 && k < n3) {
        if (A1[i] == A2[j] && A2[j] == A3[k]) {
            cout << A1[i] << " "; i++; j++; k++;
        }
        else if (A1[i] < A2[j])
            i++;
        else if (A2[j] < A3[k])
            j++;
        else
            k++;
    }
}

int main() {
    int A1[] = {10, 12, 15, 20, 25};
    int n1 = sizeof(A1) / sizeof(A1[0]);
    int A2[] = {10, 12, 13, 15};
    int n2 = sizeof(A2) / sizeof(A2[0]);
    int A3[] = {10, 12, 15, 24, 25, 26};
    int n3 = sizeof(A3) / sizeof(A3[0]);
    cout << "Common elements are: ";
    findCommonValues(A1, A2, A3, n1, n2, n3);
}

ผลลัพธ์

Common elements are: 10 12 15