কম্পিউটার টিউটোরিয়াল

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. সি/সি++-তে মাল্টিডাইমেনশনাল অ্যারে (Multidimensional Arrays)

  2. C++-এ Line Reflection: ২D প্লেনে বিন্দুগুলোর Y-অক্ষ সমান্তরাল প্রতিফলন লাইন আছে কিনা যাচাই করা

  3. C++-এ ডায়াগোনাল ট্রায়ভার্স II

  4. C++-এ static_cast