Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C의 배열에서 동일한 요소의 두 발생 사이의 최대 거리


정수 배열이 제공됩니다. 배열에 동일한 요소가 여러 번 있습니다. 여기서 작업은 배열의 동일한 두 요소 사이의 최대 거리를 찾는 것입니다. 왼쪽에서 시작하여 배열에서 각 요소를 선택합니다. 그런 다음 동일한 숫자의 마지막 항목을 찾고 인덱스 간의 차이를 저장합니다. 이제 이 차이가 최대이면 반환합니다.

입력

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

출력 −배열에서 동일한 요소의 두 발생 사이의 최대 거리 − 4

설명 − 인덱스가 있는 반복되는 숫자 −

1. 1, first index 0, last index 3 distance=3-0-1=2
2. 2, first index 1, last index 6 distance=6-1-1=4
3. 5, first index 7, last index 9 distance=9-7-1=1
Maximum distance between two occurrences of same element : 4

입력

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

출력 −배열에서 동일한 요소의 두 발생 사이의 최대 거리 − 3

설명 − 인덱스가 있는 반복되는 숫자 −

1. 10 first index 0, last index 4 distance=4-0-1=3
Maximum distance between two occurrences of same element : 3

참고 - 입력 배열에 반복되는 숫자가 없으면 -1을 반환합니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 반복되는 숫자를 갖는 정수 배열을 Arr[]

    로 취합니다.
  • maxDistance( int arr[],int n) 함수는 동일한 요소의 두 발생 사이의 최대 거리를 계산하는 데 사용됩니다.

  • 변수 maxD를 -1로 초기화합니다.

  • for 루프 내에서 처음부터 정수 배열을 탐색합니다.

  • 중첩 for 루프에서 나머지 요소를 탐색하고 반복이 있는 경우 검색합니다. ( 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;
}
// Driver code
int main(){
   int Arr[] = {1,2,4,1,3,4,2,5,6,5};
   printf("Maximum distance between two occurrences of same element in array:%d", maxDistance(Arr,10) );
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Maximum distance between two occurrences of same element in array − 4