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

C++에서 주어진 조건을 만족하는 인덱스 쌍 세기

<시간/>

처음 N개의 자연수의 순열 배열이 제공됩니다. 여기서 목표는 아래에 언급된 조건을 충족하는 요소의 인덱스 쌍을 찾는 것입니다 -

배열이 Arr[]이면 i,j는 인덱스이고 Arr[i]+Arr[j]=max(Arr[x])가 되도록 요소 쌍을 센다. i<=x<=j.

즉, Arr[i]와 A[j]의 합은 두 세그먼트 사이에 발생하는 최대 요소와 같습니다.

입력

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

출력

Count of index pairs which satisfy the given condition:1

설명 − 쌍의 합이 주어집니다. −

2+4=6, 6이 최대이지만 2와 4 사이는 아닙니다.

2+1=3, 3은 2와 1 사이가 아니며 그 사이의 최대값은 4입니다.

2+3=5, 5는 2와 3 사이에 있지 않으며 그 사이의 최대값은 4입니다.

2+6=8, 8은 2와 6 사이에 있지 않으며 그 사이의 최대값은 4입니다.

마찬가지로

1+5=6, 6은 1과 5 사이이고 그 사이의 최대값은 6입니다.

조건을 만족하는 쌍은 모두 1쌍만 존재합니다.

입력

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

출력

Count of index pairs which satisfy the given condition:2

설명 − 쌍의 합이 주어집니다. −

1+5=6, 6은 최대값이지만 1과 5 사이는 아닙니다.

1+4=5, 5는 1과 4 사이에 있으며 그 사이의 최대값은 5입니다.

2+3=5, 5는 2와 3 사이이고 그 사이의 최대값은 5입니다.

1+3=4, 4는 1과 3 사이에 있지만 그 사이의 최대값은 5입니다.

2개의 쌍 중 조건을 만족하는 쌍이 모두 존재합니다.

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

  • 정수 배열 Arr[]은 숫자와 길이를 저장합니다.

  • countPairs(int A[],int n) 함수는 배열과 크기 n을 입력으로 받아 위의 조건을 만족하는 쌍의 개수를 반환합니다.

  • 변수 개수는 이러한 쌍에 대한 초기 값 0을 저장하는 데 사용됩니다.

  • max1의 첫 번째 요소와 maxindex의 인덱스를 0으로 초기화하여 지금까지 찾은 최대값의 값과 인덱스를 저장합니다.

  • for 루프를 사용하여 배열 탐색을 시작합니다.

  • A[j]>=max1이 주어진 경우 중첩 for 루프 내부에서 max1과 해당 인덱스를 j로 업데이트합니다.

  • A[i] 및 A[j]의 각 쌍에 대해 합계가 max1과 같고 인덱스 maxindex가 i와 j 사이에 있으면 조건이 충족됨에 따라 증분 개수가 됩니다.

  • 종료 후 두 루프 모두 count에 있는 결과를 반환합니다.

예시

// CPP implementation of the approach
#include<bits/stdc++.h>
using namespace std;
// Function to return the count of
// required index pairs
int countPairs(int A[], int n){
   // To store the required count
   int count = 0;
   int i,j,k;
   int max1=A[0];
   int maxindex=0;
   for ( i = 0; i<n-1; i++){
      for(j=i+1;j<n;j++){
         if(A[j]>=max1){
             max1=A[j];
            maxindex=j;
      }
      if(A[i]+A[j]==max1 && maxindex>=i && maxindex<=j)
         count++;
      }
   }
   // Return count of subsegments
   return count;
}
int main(){
   int Arr[] = {3, 4, 6, 1, 5, 2};
   int size =6;
   cout <<endl<<"Count of index pairs which satisfy the given condition:"
   <<countPairs(Arr,size);
   return 0;
}

출력

Count of index pairs which satisfy the given condition:1