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

C++에서 주어진 조건을 만족하는 배열의 유효한 쌍을 셉니다.

<시간/>

N개 요소의 배열 arr[]이 제공됩니다. 목표는 특정 조건을 따르는 모든 유효한 쌍(Arr[i],Arr[j])의 수를 찾는 것입니다. -

인 경우 Arr[i],Arr[j] 쌍이 유효하지 않습니다.
  • Arr[i]==Arr[j]
  • Arr[i]+Arr[j]는 짝수입니다.
  • i+j<120

참고 - Arr[i],Arr[j] 및 Arr[j],Arr[i]는 한 쌍으로 계산됩니다. 유효한 쌍에는 i!=j가 있습니다. 예를 들어 이해합시다.

입력

Arr[]= { 3,2,1,2,4,3 } N=4

출력

Count of valid pairs: 2

설명

유효한 쌍은 -

Arr[0] & Arr[4] → (3,3) here Arr[i]==Arr[j] & 3+3 is even also i!=j and i+j<120
Arr[1] & Arr[3] → (2,2) here Arr[i]==Arr[j] & 2+2 is even also i!=j and i+j<120
입니다.

입력

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

출력

Count of valid pairs: 0

설명

요소의 반복이 없습니다. i!=j인 경우 유형( a,a ) 쌍이 불가능합니다.

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

  • 난수로 초기화된 정수 배열 Arr[]을 사용합니다.
  • Arr[]의 길이를 저장하는 변수 n을 사용합니다.
  • countPairs(int arr[], int n) 함수는 배열의 길이를 입력으로 받아 유효하고 원하는 조건을 충족하는 쌍을 반환합니다.
  • 쌍의 각 요소에 대해 두 개의 for 루프를 사용하여 배열을 탐색합니다.
  • 0<=i
  • arr[i], arr[j] assum=(arr[i]+aar[j])의 합을 계산합니다.
  • 쌍이 유효한지 확인합니다. i!=j 및 sum%2==0도 i+j<120인지 비교합니다.
  • 이제 arr[i]==arr[j]인지 확인합니다. 증분 수.
  • 모든 루프가 끝날 때 유효한 총 쌍 수가 있습니다.
  • 결과로 개수를 반환합니다.

#include <bits/stdc++.h>
using namespace std;
int countPairs(int arr[], int n){
   int count=0;
   for(int i=0;i<n;i++){
      for(int j=i+1;j<n;j++) //j=i+1 we don't have to check i!=j{
         int sum=arr[i]+arr[j];
         //valid pairs have i!=j
         if( sum%2==0 && i+j<120){
            if( arr[i]==arr[j] ) //valid pair{
               count++;
               cout<<endl<<" a:"<<arr[i]<<"b: "<<arr[j];
            }
         }
      }
   }
   return count;
}
int main(){
   int arr[] = {1,2,3,2,4,1,4 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout <<endl<<"Valid pairs in array:"<<countPairs(arr, n);
   return 0;
}

출력

Valid pairs in array:
a:1b: 1
a:2b: 2
a:4b: 43