हमें 2-डी स्पेस पर एन पॉइंट्स का इनपुट दिया जाता है। लक्ष्य इनपुट से अंकों के तीन गुना की गिनती का पता लगाना है जैसे कि एक बिंदु अन्य दो के बीच की रेखा पर मध्य-बिंदु है। यानी यदि त्रिक (A,B,C) है तो B, A और C (या A,B,C का कोई अन्य संयोजन) का मध्यबिंदु है।
हम एक वेक्टर में सभी बिंदुओं को जोड़े
आइए उदाहरणों से समझते हैं।
इनपुट
{ 1,2 }, { 4,2} , { 2,1 } , { 7,2 } N=4 pairs
आउटपुट
Count of triplet pairs that satisfy the given condition are: 1
स्पष्टीकरण
Here {4,2} is mid-point between {1,2} and {7,2}. Only 1 such triplet
इनपुट
{ 1,2 }, { 4,2} , { 2,1 } , { 5,2 }, { 8,1} , {1,1} N=6
आउटपुट
Count of triplet pairs that satisfy the given condition are: 1
स्पष्टीकरण
No such triplet exist
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम
प्रकार के जोड़े का एक वेक्टर ले रहे हैं। -
प्रत्येक जोड़ी में (x, y) निर्देशांक होते हैं।
-
फ़ंक्शन mid_point(vector
> vec, int size) एक वेक्टर लेता है और इसका आकार इनपुट के रूप में होता है और मध्य-बिंदु की स्थिति को पूरा करने वाले ट्रिपल की संख्या देता है। -
ऐसे त्रिक के लिए प्रारंभिक चर गणना को 0 के रूप में लें।
-
वेक्टर से सभी जोड़ियों को एक सेट<जोड़ी
> सेट में डालें। इसमें सभी अद्वितीय बिंदु होंगे। -
प्रत्येक जोड़ी बिंदुओं के लिए दो लूप के लिए वेक्टर को पार करें।
-
पूर्णांक बिंदु_ए में दोनों बिंदुओं के x निर्देशांक का योग और दोनों बिंदुओं के y निर्देशांक का योग पूर्णांक बिंदु_बी में संग्रहीत करें।
-
यदि बिंदु_ए और बिंदु_बी में ये दोनों योग सम हैं तो मध्य-बिंदु स्थिति की जांच करें।
-
यदि एक जोड़ी (point_A/2,point_B/2) सेट में एक जोड़ी के रूप में मौजूद है, तो इसका मतलब है कि मध्य-बिंदु मौजूद है। ट्रिपलेट की वृद्धि संख्या।
-
अंत में गिनती में तीन गुना संख्या होगी।
-
परिणाम के रूप में लूप के अंत में गिनती लौटाएं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int mid_point(vector<pair<int, int>> vec, int size){ int count = 0; set<pair<int, int> > sets; for (int i = 0; i < size; i++){ sets.insert(vec[i]); } for (int i = 0; i < size; i++){ for (int j = i + 1; j < size; j++){ int point_A = vec[i].first + vec[j].first; int point_B = vec[i].second + vec[j].second; if (point_A % 2 == 0 && point_B % 2 == 0){ if (sets.find(make_pair(point_A / 2, point_B / 2)) != sets.end()){ count++; } } } } return count; } int main(){ vector<pair<int, int>> vec = { { 9, 2 }, { 5, 2 }, { 1, 2 } }; int size = vec.size(); cout<<"Count of triplet pairs (A, B, C) of points in 2-D space that satisfy the given condition are: "<<mid_point(vec, size); }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of triplet pairs (A, B, C) of points in 2-D space that satisfy the given condition are: 1