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

ระยะห่างสูงสุดระหว่างสองครั้งขององค์ประกอบเดียวกันในอาร์เรย์ในภาษา C

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

ตัวอย่าง

อินพุต

Arr[] = { 1, 2, 4, 1, 3, 4, 2, 5, 6, 5 }

เอาต์พุต — ระยะห่างสูงสุดระหว่างสองครั้งขององค์ประกอบเดียวกันในอาร์เรย์ — 4

คำอธิบาย — ตัวเลขที่ซ้ำกันพร้อมดัชนี —

1. 1, ดัชนีแรก 0, ดัชนีสุดท้าย 3 ระยะห่าง = 3-0-1 = 2
2. 2, ดัชนีแรก 1, ดัชนีสุดท้าย 6 ระยะห่าง = 6-1-1 = 4
3. 5, ดัชนีแรก 7, ดัชนีสุดท้าย 9 ระยะห่าง = 9-7-1 = 1
ระยะห่างสูงสุดระหว่างสองครั้งขององค์ประกอบเดียวกัน: 4

อินพุต

Arr[] = { 10, 20, 1, 10, 10, 21, 12, 0 }

เอาต์พุต — ระยะห่างสูงสุดระหว่างสองครั้งขององค์ประกอบเดียวกันในอาร์เรย์ — 3

วิธีการที่ใช้ในโปรแกรม

  • รับอาร์เรย์จำนวนเต็มที่มีตัวเลขซ้ำเป็น Arr[]
  • ฟังก์ชัน maxDistance(int arr[], int n) ใช้คำนวณระยะห่างสูงสุดระหว่างสองครั้งขององค์ประกอบเดียวกัน
  • กำหนดตัวแปร maxD เริ่มต้นเป็น -1
  • ในลูป for วนอาร์เรย์จากจุดเริ่มต้น
  • ใน nested for loop วนองค์ประกอบที่เหลือและค้นหาการซ้ำถ้ามี (if (arr[i] == arr[j]))
  • ถ้าเป็นจริง ให้คำนวณความต่างของตัวเลขโดยลบดัชนี (temp = j-i-1)
  • ถ้าค่านี้เป็นค่าสูงสุดที่พบจนถึงตอนนี้ ให้เก็บใน maxD
  • คืนค่า maxD หลังจากวนอาร์เรย์ทั้งหมด

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

#include <stdio.h>
#include <math.h>

int maxDistance(int arr[], int n) {
    int size = n;
    int maxD = -1;
    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            if (arr[i] == arr[j]) {
                int temp = abs(j - i - 1);
                maxD = maxD > temp ? maxD : temp;
            }
    return maxD;
}

// โค้ดหลัก
int main() {
    int Arr[] = {1, 2, 4, 1, 3, 4, 2, 5, 6, 5};
    printf("ระยะห่างสูงสุดระหว่างสองครั้งขององค์ประกอบเดียวกันในอาร์เรย์: %d", maxDistance(Arr, 10));
    return 0;
}

ผลลัพธ์

หากรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ —

ระยะห่างสูงสุดระหว่างสองครั้งขององค์ประกอบเดียวกันในอาร์เรย์ — 4