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

C에서 배열에 있는 요소의 첫 번째 인덱스와 마지막 인덱스 간의 최대 차이


크기가 N인 정수 배열이 제공됩니다. 배열은 임의의 순서로 정수로 구성됩니다. 작업은 배열 요소의 첫 번째 인덱스와 마지막 인덱스 간의 최대 차이를 찾는 것입니다. 배열에서 두 번 나타나는 숫자를 찾아야 하며 인덱스 간의 차이가 최대입니다. 그러한 쌍이 더 있으면 색인 간의 최대 차이를 저장합니다.

입력

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

출력 −배열에 있는 요소의 첫 번째 인덱스와 마지막 인덱스 간의 최대 차이 − 5

설명 − 요소 쌍과 인덱스 간의 차이는 다음과 같습니다. −

(2,2) Arr[0] and Arr[5] 5-0=5 max difference till now is 5
(1,1) Arr[1] and Arr[3] 3-1=2 max difference till now is 5
(3,3) Arr[2] and Arr[4] 4-2=2 max difference till now is 5
(5,5) Arr[6] and Arr[7] 7-6=1 max difference till now is 5

입력

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

출력 −배열에 있는 요소의 첫 번째 인덱스와 마지막 인덱스 간의 최대 차이 − 4

설명 − 요소 쌍과 인덱스 간의 차이는 다음과 같습니다. −

(2,2) Arr[0] and Arr[1] ; 1-0=1; max difference till now is 1
(3,3) Arr[2] and Arr[5] ; 5-2=3; max difference till now is 3
(4,4,4) Arr[3],Arr[6],Arr[7] ; 7-6=1,6-3=3,7-3=4; max difference till now is 4
(8,8) Arr[4] and Arr[8] ; 8-4=4 ; max difference till now is 4

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

  • 임의의 순서로 반복되는 숫자를 포함하는 정수 배열을 선언합니다.( Arr[] )

  • 배열의 크기를 저장할 변수를 만듭니다. (N)

  • maxDifference(int Arr[],int n) 함수는 배열 요소의 첫 번째 인덱스와 마지막 인덱스 간의 최대 차이(maxD)를 계산하는 데 사용됩니다.

  • maxDifference() 내부에서 maxD가 지금까지 발견된 최대 인덱스 차이를 저장하는 데 사용된다고 선언했습니다.

  • 첫 번째 요소( 인덱스 i=0 )에서 시작하여 for 루프를 사용하여 배열을 탐색합니다.

  • 중첩 for 루프에서 마지막 인덱스에 도달할 때까지 나머지 배열(j=i+1)을 탐색합니다.

  • Arr[i]와 동일한 요소를 찾으면 인덱스 i,j 간의 차이를 계산하고 maxD의 이전 값보다 크면 maxD를 업데이트합니다.

  • for 루프가 끝날 때까지 이 작업을 계속합니다.

  • maxD에 저장된 결과를 반환합니다.

예시

#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("Maximum difference between first and last indexes of an element in array : %d" ,maxDifference(Arr, N);
   return 0;
}

출력

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

Maximum difference between first and last indexes of an element in array : 5