Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

2-D स्पेस में बिंदुओं के ट्रिपलेट जोड़े (A, B, C) की गणना करें जो दी गई शर्त को पूरा करते हैं C++ में


हमें 2-D स्पेस पर N बिंदुओं का इनपुट दिया गया है। लक्ष्य इनपुट से बिंदुओं के ट्रिपलेट की संख्या ढूंढना है जैसे कि एक बिंदु अन्य दो के बीच की रेखा पर मध्य-बिंदु हो। यानी यदि ट्रिपलेट (A,B,C) है तो B, A और C का मध्य-बिंदु है (या A,B,C का कोई अन्य संयोजन)।

हम इसे वेक्टर में सभी बिंदुओं को <int,int> जोड़े के रूप में डालकर करेंगे। फिर इस वेक्टर के सभी जोड़ों को सेट में जोड़ेंगे। सेट से दो बिंदु लेकर जांचेंगे कि क्या उनके (x,y) निर्देशांकों का योग 2 से विभाजित करने पर उसी सेट में मौजूद है। यदि हां, तो ट्रिपलेट काउंट बढ़ाएंगे।

उदाहरण से समझते हैं

इनपुट

{ 1,2 }, { 4,2} , { 2,1 } , { 7,2 } N=4 जोड़े

आउटपुट

दिए गए शर्त को पूरा करने वाले ट्रिपलेट जोड़े की संख्या: 1

व्याख्या

यहां {4,2}, {1,2} और {7,2} के बीच मध्य-बिंदु है। केवल 1 ऐसा ट्रिपलेट

इनपुट

{ 1,2 }, { 4,2} , { 2,1 } , { 5,2 }, { 8,1} , {1,1} N=6

आउटपुट

दिए गए शर्त को पूरा करने वाले ट्रिपलेट जोड़े की संख्या: 1

व्याख्या

ऐसा कोई ट्रिपलेट मौजूद नहीं है

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • हम <int,int> प्रकार के जोड़ों का एक वेक्टर लेते हैं।

  • प्रत्येक जोड़े में (x,y) निर्देशांक होते हैं।

  • फ़ंक्शन mid_point(vector<pair<int, int>> vec, int size) एक वेक्टर और उसका आकार लेता है और मध्य-बिंदु शर्त को पूरा करने वाले ट्रिपलेट की संख्या लौटाता है।

  • प्रारंभिक चर count को 0 से आरंभ करें ऐसे ट्रिपलेट के लिए।

  • वेक्टर के सभी जोड़ों को set<pair<int, int> > sets में डालें। इसमें सभी अद्वितीय बिंदु होंगे।

  • दो फॉर लूप का उपयोग करके वेक्टर को पार करें प्रत्येक जोड़े के लिए।

  • दोनों बिंदुओं के x निर्देशांकों का योग पूर्णांक point_A में और y निर्देशांकों का योग पूर्णांक point_B में संग्रहीत करें।

  • यदि point_A और point_B दोनों में ये योग सम हैं तो मध्य-बिंदु शर्त की जांच करें।

  • यदि जोड़ा (point_A/2, point_B/2) सेट में एक जोड़े के रूप में मौजूद है तो मध्य-बिंदु मौजूद है। ट्रिपलेट की संख्या बढ़ाएं।

  • अंत में count में ट्रिपलेट की संख्या होगी।

  • फॉर लूप के अंत में count को परिणाम के रूप में लौटाएं।

उदाहरण

#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<<"दिए गए शर्त को पूरा करने वाले ट्रिपलेट जोड़े (A, B, C) की संख्या: "<<mid_point(vec, size); }

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -

दिए गए शर्त को पूरा करने वाले ट्रिपलेट जोड़े (A, B, C) की संख्या: 1

  1. - C++ में दी गई स्ट्रिंग के नॉन-ओवरलैपिंग पैलिंड्रोमिक सबस्ट्रिंग जोड़े की गिनती

    हमें एक स्ट्रिंग इनपुट के रूप में दी गई है, कार्य दी गई इनपुट स्ट्रिंग के नॉन-ओवरलैपिंग पैलिंड्रोमिक सबस्ट्रिंग के जोड़े की संख्या ढूंढना है। arr[i][j] का मान सच है यदि सबस्ट्रिंग पैलिंड्रोम है, अन्यथा गलत। हम स्ट्रिंग से संयोजन लेंगे और जांचेंगे कि क्या जोड़े मानदंडों को पूरा करते हैं। उदाहरणों से

  1. - C++ में दी गई शर्त को पूरा करने वाले सबसेट को गिनना

    संख्याओं की एक सरणी और एक पूर्णांक x इनपुट के रूप में दिया गया है। लक्ष्य arr[] के उन सभी सबसेट को ढूंढना है जिनके व्यक्तिगत एलिमेंट्स के साथ-साथ उनका योग भी x से पूरी तरह विभाज्य है। उदाहरण के लिए इनपुट arr[] = {1,2,3,4,5,6} x=3 आउटपुट Count of subsets that satisfy the given condition :3 व्याख्या स

  1. ग्रिड में दी गई दिशा में संभावित चालों की गणना करने का C++ प्रोग्राम ग्रिड में दी गई दिशा में संभावित चालों की गणना करने का C++ प्रोग्राम

    समस्या विवरण हमें n x m आकार का ग्रिड और प्रारंभिक बिंदु (x, y) दिया गया है। साथ ही चालों/कदमों के जोड़े दिए गए हैं जैसे (1,1), (2,2) आदि। प्रत्येक जोड़ा x और y अक्ष में कदम की इकाइयों को दर्शाता है। लक्ष्य ग्रिड की सीमाओं [1,n] x [1,m] के भीतर ली जा सकने वाली कुल चालों की संख्या ज्ञात करना है। उदा