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

C++에서 평면의 평행사변형 수


평면 사변형을 형성하는 점을 포함하는 평면이 주어지고 주어진 점을 사용하여 형성할 수 있는 평행 사변형의 수를 계산하는 작업이 주어집니다. 평행사변형에서 사변형의 대변은 평행하므로 마주보는 각도도 같습니다.

입력 -

int a[] = {0, 2, 5, 5, 2, 5, 2, 5, 2}
Int b[] = {0, 0, 1, 4, 3, 8, 7, 11, 10}

C++에서 평면의 평행사변형 수

출력 − 평면의 평행사변형 개수 − 3

설명 − 우리는 (x, y) 점이 주어지고 이 점을 사용하여 그림과 같이 3개의 평행사변형의 개수를 형성할 수 있습니다.

입력 -

a[] = {0, 3, 1, 4, 1, 5}
b[] = {0, 1, 3, 4, 4, 4}

출력 − 평면의 평행사변형 개수 − 1

설명 - 우리는 (x, y) 점이 주어지고 이 점을 사용하여 그림과 같이 1개의 평행사변형의 개수를 형성할 수 있습니다.

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

  • x좌표값은 array_1, y좌표값은 array_2를 입력

  • array_1의 크기를 계산하고 추가 처리를 위해 데이터를 함수에 전달합니다.

  • 쌍을 형성하고 정수 유형 데이터를 저장할 유형 맵의 변수를 작성하십시오.

  • 형성할 수 있는 평행사변형의 총계를 저장할 임시 변수 개수 생성

  • 0부터 array_1의 크기까지 FOR i 루프 시작

  • i+1에서 array_1의 크기까지 FOR j에 대한 또 다른 루프 시작

  • 루프 내부에서 a_mid를 a[i] + a[j]로 설정하고 b_mid를 b[i] + b[j]

    로 설정합니다.
  • 그리고 array_1과 array_2의 중간 값을 1씩 증가시킵니다.

  • 처음부터 끝까지 지도를 가로지르는 또 다른 루프 시작

  • 루프 내에서 쌍의 y 값으로 임시 변수를 설정합니다.

  • 그리고 temp * (temp -1 ) / 2

    로 카운트를 설정합니다.
  • 반품 횟수

  • 결과를 인쇄하십시오.

예시

#include <bits/stdc++.h>
using namespace std;
//Count of parallelograms in a plane
int parallelogram(int a[], int b[], int size){
   map<pair<int, int>, int> um;
   int count = 0;
   for (int i=0; i<size; i++){
      for (int j=i+1; j<size; j++){
         int a_mid = a[i] + a[j];
         int b_mid = b[i] + b[j];
         um[make_pair(a_mid, b_mid)]++;
      }
   }
   for (auto it = um.begin(); it != um.end(); it++){
      int temp = it->second;
      count+= temp*(temp - 1)/2;
   }
   return count;
}
int main(){
   int a[] = {0, 3, 1, 4, 1, 5};
   int b[] = {0, 1, 3, 4, 4, 4};
   int size = sizeof(a) / sizeof(int);
   cout<<"Count of parallelograms in a plane: "<<parallelogram(a, b, size) << endl;
   return 0;
}

출력

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

Count of parallelograms in a plane: 1