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

C++의 배열에 제품이 존재하는 카운트 쌍

<시간/>

정수형 요소의 배열이 주어지고 주어진 배열에서 쌍을 형성하고 쌍에 있는 요소의 곱을 계산하고 주어진 곱이 주어진 배열에 존재하는지 여부를 확인하는 작업입니다.

입력 - 정수 arr[] ={6, 2, 3, 1, 5, 10}

출력 − 동일한 배열에 제품이 존재하는 쌍의 수는 − 7

입니다.

설명 - 주어진 배열에서 만들 수 있는 쌍은 다음과 같습니다. (6, 2), (6, 3), (6, 1), (6, 5), (6, 10), (2, 3), ( 2, 1), (2, 5), (2, 10), (3, 1), (3, 5), (3, 10), (1, 5), (1, 10), (5, 10). 따라서 동일한 배열에서 주어진 곱 값을 갖는 쌍은 (2, 3)을 6으로, (6, 1)을 6으로, (3, 1)을 3으로, (2, 5)를 10으로, (1, 5)를 5로, (2, 1) 2로, (1, 10 ) 10으로.

입력 - 정수 arr[] ={2, 4, 8, 5, 10}

출력 − 동일한 배열에 제품이 존재하는 쌍의 수는 − 2

설명 - 주어진 배열에서 만들 수 있는 쌍은 다음과 같습니다. (2, 4), (2, 8), (2, 5), (2, 10), (4, 8), (4, 5), ( 4, 10), (8, 5), (8, 10), (5, 10). 따라서 동일한 배열에서 주어진 곱 값을 가진 쌍은 (2, 4) 8, (5, 2) 10입니다.

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

주어진 문제를 해결하기 위한 여러 가지 접근 방식, 즉 순진한 접근 방식과 효율적인 접근 방식이 있을 수 있습니다. 그럼 먼저 순진한 접근 방식을 살펴보겠습니다.

  • 정수 요소의 배열을 입력하고 배열의 크기를 계산하고 데이터를 함수에 전달

  • 주어진 배열에서 사용할 수 있는 제품 값과 쌍의 개수를 저장하기 위해 임시 변수 개수를 선언합니다.

  • 배열의 크기까지 i에서 0까지 FOR 루프 시작

  • 루프 내에서 배열의 크기까지 j에서 i + 1까지 FOR 또 다른 루프를 시작합니다.

  • 루프 내에서 곱을 다음과 같이 계산합니다. arr[i] * arr[j]

  • 배열의 크기까지 k에서 0까지 FOR 또 다른 루프 시작

  • K 루프 내에서 IF product =arr[k]를 확인한 다음 카운트를 1 증가시킵니다.

  • 개수 반환

  • 결과를 인쇄합니다.

효율적인 접근

  • 정수 요소의 배열을 입력하고 배열의 크기를 계산하고 데이터를 함수에 전달

  • 주어진 배열에서 사용할 수 있는 제품 값과 쌍의 개수를 저장하기 위해 임시 변수 개수를 선언합니다.

  • pro로 설정된 STL 유형의 변수 생성

  • 배열의 크기까지 i에서 0까지 FOR 루프 시작

  • 루프 내에서 set 변수 pro

    에 arr[i]를 삽입합니다.
  • 배열의 크기까지 i에서 0까지 FOR 또 다른 루프 시작

  • 루프 내에서 배열의 크기까지 j에서 i + 1까지 FOR 또 다른 루프를 시작합니다.

  • 제품을 arr[i] * arr[j]

    로 설정
  • IF pro.find(product) !=pro.end() 를 확인한 다음 카운트를 1 증가시킵니다.

  • 개수 반환

  • 결과를 인쇄하십시오.

예(순진한 접근 방식)

#include <bits/stdc++.h>
using namespace std;
int product_pair(int arr[], int size){
   int product = 1;
   int count = 0;
   for(int i = 0 ; i<size ; i++){
      for(int j = i+1;j<size;j++){
         product = arr[i] * arr[j];
         for(int pro = 0 ; pro < size; pro++){
            if(product == arr[pro]){
               count++;
            }
         }
      }
   }
   return count;
}
int main(){
   int arr[] = {6, 2, 3, 1, 5, 10};
   int size = sizeof(arr)/sizeof(arr[0]);
   cout<<"Count of pairs whose products exist in same array are: "<<product_pair(arr,size);
   return 0;
}

출력

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

Count of pairs whose products exist in same array are: 7

예시(효율적인 접근)

#include<bits/stdc++.h>
using namespace std;
int product_pair(int arr[], int size){
   set< int > pro;
   int count = 0;
   int product = 1;
   for (int i = 0 ; i < size; i++){
      pro.insert(arr[i]);
   }
   for (int i = 0 ; i < size; i++){
      for (int j = i + 1; j < size ; j++){
         product = arr[i] * arr[j];
         if(pro.find(product) != pro.end()){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int arr[] = {6, 2, 3, 1, 5, 10};
   int size = sizeof(arr)/sizeof(arr[0]);
   cout<<"Count of pairs whose products exist in same array are: "<<product_pair(arr,size);
   return 0;
}

출력

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

Count of pairs whose products exist in same array are: 7