हमें एक तल दिया गया है जिसमें समानांतर चतुर्भुज बनाने वाले बिंदु हैं और कार्य दिए गए बिंदुओं का उपयोग करके बनने वाले समानांतर चतुर्भुजों की संख्या की गणना करना है। समानांतर चतुर्भुज में एक चतुर्भुज की विपरीत भुजाएँ समानांतर होती हैं और इसलिए विपरीत कोण समान होते हैं।
इनपुट -
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 समानांतर चतुर्भुज बना सकते हैं।
उपयोग किया गया दृष्टिकोण
- x-निर्देशांक मानों के लिए array_1 और y-निर्देशांक मानों के लिए array_2 इनपुट करें
- array_1 का आकार गणना करें और आगे की प्रक्रिया के लिए डेटा को फ़ंक्शन में पास करें
- एक मैप चर बनाएं जो युग्म बनाएगा और पूर्णांक प्रकार का डेटा संग्रहीत करेगा
- कुल समानांतर चतुर्भुजों को संग्रहीत करने के लिए एक अस्थायी चर
countबनाएं - i से 0 से array_1 के आकार तक लूप FOR शुरू करें
- j से i+1 से array_1 के आकार तक एक और लूप FOR शुरू करें
- लूप के अंदर,
a_mid = a[i] + a[j]औरb_mid = b[i] + b[j]सेट करें - और array_1 और array_2 के मध्य मानों को 1 से बढ़ाएं
- एक और लूप शुरू करें जो मैप को शुरुआत से अंत तक पार करेगा
- लूप के अंदर, युग्म के y मान के साथ एक अस्थायी चर सेट करें
- और
count = temp * (temp - 1) / 2सेट करें - काउंट लौटाएं
- परिणाम प्रिंट करें।
C++ कार्यान्वयन
#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