평면 사변형을 형성하는 점을 포함하는 평면이 주어지고 주어진 점을 사용하여 형성할 수 있는 평행 사변형의 수를 계산하는 작업이 주어집니다. 평행사변형에서 사변형의 대변은 평행하므로 마주보는 각도도 같습니다.
입력 -
int a[] = {0, 2, 5, 5, 2, 5, 2, 5, 2} Int b[] = {0, 0, 1, 4, 3, 8, 7, 11, 10}
출력 − 평면의 평행사변형 개수 − 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