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

C++의 배열에서 동일한 요소가 있는 인덱스 쌍의 수


N 요소의 배열이 제공됩니다. 목표는 i!=j와 같은 동일한 요소 값을 갖는 인덱스 쌍(i,j)을 찾는 것입니다. 즉, Arr[i]=Arr[j] 및 i!=j입니다. 이것은 같은 크기의 장갑을 만드는 데 사용됩니다. N개의 장갑 중 짝을 이룬 장갑만 판매하는 데 유용합니다.

0<=i0 &&Arr[j]>0이고 i!=j인 경우 (i,j)의 각 쌍에 대해 비교합니다. true인 경우 이러한 쌍의 수를 늘리고 이러한 요소를 -1( Arr[i]=Arr[j]=-1)로 만들어 장갑의 크기가 -1일 수 없으므로 추가 검사에서 제거합니다.

예를 들어 이해합시다.

입력 - Arr[]={ 4,3,2,1,2,4 } N=6

출력 − 요소가 동일한 인덱스 쌍의 수 − 2

설명 -

count=0, Arr[]= [ 4,3,2,1,2,4 ]
Arr[0]=Arr[5], 0!=5, count=1 Arr[0]=Arr[5]=-1 → [ -1,3,2,1,2,-1 ]
Arr[2]=Arr[4], 2!=4, count=2 Arr[2]=Arr[4]=-1 → [ -1,3,-1,1,-1,-1 ]
Now array has no new pairs with equal values, i!=j and > -1. Total pairs=2

입력 − Arr[]={ 2,2,2,2,2 } N=5

출력 − 요소가 동일한 인덱스 쌍의 수 − 2

설명 -

count=0, Arr[]= [ 2,2,2,2,2 ]
Arr[0]=Arr[1], 0!=1, count=1 Arr[0]=Arr[1]=-1 → [ -1,-1,2,2,2 ]
Arr[2]=Arr[3], 2!=3, count=2 Arr[2]=Arr[3]=-1 → [ -1,-1,-1,-1,2 ]
Now array has no new pairs with equal values, i!=j and > -1. Total pairs=2

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

  • 장갑 크기> 0에 대해 임의의 숫자로 초기화된 정수 배열 Arr[]을 사용합니다.

  • Arr[]의 길이를 저장하는 변수 n을 사용합니다.

  • countPairs(int arr[], int n) 함수는 배열의 길이를 입력으로 받아 크기가 같고 인덱스가 다른 쌍을 반환합니다.

  • 쌍의 각 요소에 대해 두 개의 for 루프를 사용하여 배열을 탐색합니다.

  • 0<=i

  • arr[i]와 arr[j]가 양수인지 확인하십시오. arr[i]==arr[j]이면 카운트를 증가시킵니다. (i는 루프에 설정된 조건에 따라 j와 결코 같지 않으며 비교할 필요가 없습니다).

  • 이제 추가 비교에서 제거하려면 arr[i]=arr[j]=-1로 설정하십시오.

  • 모든 루프가 끝나면 총 장갑 쌍 수가 계산됩니다.

  • 카운트를 결과로 반환합니다.

예시

// C++ implementation of above approach
#include <bits/stdc++.h>
using namespace std;
// Function to count equal elements to make pair of gloves
int countPairs(int arr[], int n){
   int count = 0;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         if(arr[i]==arr[j] && arr[i]>0 && arr[j]>0){
            count++;
            arr[i]=arr[j]=-1;
         }
      }
   }
   return count;
}
int main(){
   int arr[] = { 1,2,4,2,1,2,4 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout <<"Pair of gloves ( Equal element pairs ):"<<countPairs(arr, n);
   return 0;
}

출력

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

Pair of gloves ( Equal element pairs ):3.