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

C++ में दिए गए N त्रिभुजों में अद्वितीय त्रिभुजों की संख्या ढूंढना


इस समस्या में, हमें आकार N के तीन सरणी s1[], s2[] और s3[] दिए जाते हैं, जो N त्रिभुजों को दर्शाते हैं। हमारा कार्य दिए गए N त्रिभुजों में अद्वितीय त्रिभुजों की संख्या ढूंढना है।

एक त्रिभुज के अद्वितीय होने के लिए, उसकी सभी भुजाएं अद्वितीय होनी चाहिए यानी कोई अन्य त्रिभुज ऐसी भुजाएं नहीं रखना चाहिए।

आइए एक उदाहरण से समस्या को समझते हैं,

इनपुट

s1[] = {1, 5, 3} s2[] = {2, 3, 2} s3[] = {4, 2, 5}

आउटपुट

1

व्याख्या

भुजाओं 1 2 4 वाला त्रिभुज अद्वितीय है।

समाधान दृष्टिकोण

इस समस्या का एक सरल समाधान उन त्रिभुजों की संख्या गिनना है जो अद्वितीय हैं।

इसके लिए, हम पहले प्रत्येक त्रिभुज की भुजाओं को सॉर्ट करेंगे और फिर एक मैप में स्टोर करेंगे, यदि इसके मान अद्वितीय हैं तो गिनती बढ़ाएं।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,

उदाहरण

#include <bits/stdc++.h> using namespace std; int countUniqueTriangle(int a[], int b[], int c[], int n) {    vector<int> triSides[n];    map<vector<int>, int> m;    for (int i = 0; i < n; i++) {       triSides[i].push_back(a[i]);       triSides[i].push_back(b[i]);       triSides[i].push_back(c[i]);       sort(triSides[i].begin(), triSides[i].end());       m[triSides[i]] = m[triSides[i]] + 1;    }    map<vector<int>, int>::iterator itr;    int uniqueTriCount = 0;    for (itr = m.begin(); itr != m.end(); itr++) {       if (itr->second == 1)          if (itr->second == 1)             uniqueTriCount++;    }    return uniqueTriCount; } int main() {    int s1[] = { 1, 5 ,3 };    int s2[] = { 2, 3, 2 };    int s3[] = { 4, 2, 5 };    int N = sizeof(s1) / sizeof(s1);    cout<<"The number of unique triangles is "<<countUniqueTriangle(s1, s2, s3, N);    return 0; }

आउटपुट

The number of unique triangles is 1

  1. - C++ कोड: दी गई अभाज्य परिकल्पना को खंडित करने वाली संख्या खोजें

    मान लीजिए हमारे पास एक संख्या n है। मान लीजिए एक परिकल्पना है एक धनात्मक पूर्णांक n मौजूद है जो प्रत्येक धनात्मक पूर्णांक m के लिए संख्या (n·m + 1) एक अभाज्य संख्या है। हमें इस कथन को खंडित करने के लिए एक प्रतिउदाहरण के रूप में ऐसा m ढूंढना है।उदाहरण के लिए, यदि इनपुट n = 12 है, तो आउटपुट 10 होगा, क

  1. दिए गए ग्राफ में ब्रिज एज की संख्या ज्ञात करने का C++ प्रोग्राम दिए गए ग्राफ में ब्रिज एज की संख्या ज्ञात करने का C++ प्रोग्राम

    मान लीजिए n वर्टेक्स और m एज वाला एक अनभारित, निदेश रहित ग्राफ दिया गया है। ग्राफ में एक ब्रिज एज वह एज है जिसे हटाने से ग्राफ असंबद्ध हो जाता है। हमें दिए गए ग्राफ में ऐसी एज की संख्या ज्ञात करनी है। ग्राफ में समानांतर एज या सेल्फ-लूप नहीं हैं। उदाहरण के लिए, यदि इनपुट है n = 5, m = 6, edges = {{1

  1. - C++ में परिमेय संख्याओं का LCM खोजें

    यहां हम देखेंगे कि परिमेय संख्याओं का LCM कैसे निकाला जाता है। हमारे पास परिमेय संख्याओं की एक सूची है। मान लीजिए सूची है {2/7, 3/14, 5/3}, तो LCM 30/1 होगा। इस समस्या को हल करने के लिए, हमें सभी अंशों (numerators) का LCM और सभी हरों (denominators) का GCD निकालना होगा, फिर परिमेय संख्याओं का LCM होग