Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Hiệu tối đa giữa chỉ số đầu và cuối của cùng phần tử trong mảng C

Cho mảng số nguyên kích thước N. Tìm hiệu lớn nhất giữa chỉ số đầu tiên và cuối cùng của cùng một phần tử trong mảng.

Ví dụ

Đầu vào

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

Đầu ra - Hiệu tối đa: 5

Giải thích - Các cặp phần tử trùng:

(2,2): chỉ số 0 và 5 → 5-0 = 5
(1,1): chỉ số 1 và 3 → 3-1 = 2
(3,3): chỉ số 2 và 4 → 4-2 = 2
(5,5): chỉ số 6 và 7 → 7-6 = 1
Hiệu lớn nhất: 5

Đầu vào

Arr[] = { 2, 2, 3, 4, 8, 3, 4, 4, 8, 7 }

Đầu ra - Hiệu tối đa: 4

Phương pháp

  • Hàm maxDifference(int arr[], int n)
  • Khởi tạo maxD = 0
  • 2 vòng lặp lồng nhau: i từ 0 đến n-2, j từ i+1 đến n-1
  • Nếu arr[i] == arr[j] và (j-i) > maxD → cập nhật maxD
  • Trả về maxD

Chương trình mẫu

#include <stdio.h>

int maxDifference(int arr[], int n) {
    int maxD = 0;
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            if (arr[i] == arr[j] && (j - i) > maxD)
                maxD = j - i;
        }
    }
    return maxD;
}

int main() {
    int Arr[] = {1, 4, 1, 3, 3, 5, 4, 5, 2};
    int N = sizeof(Arr) / sizeof(Arr[0]);
    printf("Hiệu tối đa chỉ số đầu/cuối: %d", maxDifference(Arr, N));
    return 0;
}

Kết quả

Hiệu tối đa chỉ số đầu/cuối: 5