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

C++ में कॉम्बिनेशन्स


मान लीजिए हमारे पास दो पूर्णांक n और k हैं। हमें 1 ... n में से k संख्याओं के सभी संभावित संयोजन ढूंढने हैं। इसलिए यदि n = 4 और k = 2, तो संयोजन [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]] होंगे।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • हम इसे हल करने के लिए पुनरावर्ती फ़ंक्शन का उपयोग करेंगे। solve() फ़ंक्शन n, k, temp सरणी और start ले रहा है। start प्रारंभ में 1 है। यह इस तरह कार्य करेगा
  • यदि temp सरणी का आकार = k, तो temp को res सरणी में डालें, और वापस लौटें
  • i := start से n तक
    • i को temp में डालें
    • solve(n, k, temp, i + 1)
    • temp के अंत से एक तत्व हटाएं
  • solve फ़ंक्शन को solve(n, k, []) जैसे कॉल करें
  • res लौटाएं

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें -

#include  using namespace std; void print_vector(vector > v){    cout << "[";    for(int i = 0; i > res;    void solve(int n, int k, vector  temp, int start = 1){       if(temp.size() == k){          res.push_back(temp);          return;       }       for(int i = start; i <= n; i++){          temp.push_back(i);          solve(n, k, temp, i + 1);          temp.pop_back();       }    }    vector > combine(int n, int k) {       res.clear();       vector  temp;       solve(n ,k, temp);       return res;    } }; main(){    Solution ob;    print_vector(ob.combine(5,3)); }

इनपुट

5 3

आउटपुट

[[1,2,3],[1,2,4],[1,2,5],[1,3,4],[1,3,5],[1,4,5],[2,3,4],[2,3,5],[2,4,5],[3,4,5]]

  1. C/C++ में मल्टीडायमेंशनल ऐरे C/C++ में मल्टीडायमेंशनल ऐरे

    C/C++ में, मल्टीडायमेंशनल ऐरे को सरल शब्दों में ऐरे के ऐरे के रूप में परिभाषित किया जाता है। मल्टीडायमेंशनल ऐरे में डेटा टेबुलर फॉर्म में स्टोर होता है (रो मेजर ऑर्डर में)। निम्नलिखित डायग्राम 3 x 3 x 3 डायमेंशन वाले मल्टीडायमेंशनल ऐरे के लिए मेमोरी आवंटन रणनीति दिखाता है। एल्गोरिदम Begin ऐर

  1. C++ में लाइन रिफ्लेक्शन - Y-अक्ष के समानांतर सममित रेखा जांचें C++ में लाइन रिफ्लेक्शन - Y-अक्ष के समानांतर सममित रेखा जांचें

    समस्या विवरण मान लीजिए हमारे पास 2D तल पर n बिंदु हैं, हमें जांचना है कि क्या y-अक्ष के समानांतर कोई रेखा है जो दिए गए बिंदुओं को सममित रूप से प्रतिबिंबित करती है, दूसरे शब्दों में, जांचें कि क्या कोई ऐसी रेखा मौजूद है जो सभी बिंदुओं को दी गई रेखा पर प्रतिबिंबित करने के बाद मूल बिंदुओं का समुच्चय प

  1. C++ में डायगोनल ट्रैवर्स II C++ में डायगोनल ट्रैवर्स II

    मान लीजिए हमारे पास nums नामक लिस्ट ऑफ लिस्ट है, हमें nums के सभी एलिमेंट्स को डायगोनल क्रम में दिखाना है।इसलिए, यदि इनपुट हैतो आउटपुट होगा [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:एक ऐरे ret परिभाषित करेंएक 2D ऐरे v परिभाषित करेंi := 0 से शुरू करें,