N 요소의 배열이 제공됩니다. 목표는 i!=j와 같은 동일한 요소 값을 갖는 인덱스 쌍(i,j)을 찾는 것입니다. 즉, Arr[i]=Arr[j] 및 i!=j입니다. 이것은 같은 크기의 장갑을 만드는 데 사용됩니다. N개의 장갑 중 짝을 이룬 장갑만 판매하는 데 유용합니다.
0<=i
예를 들어 이해합시다.
입력 - 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.