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

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


मान लीजिए हमें k संख्याओं के सभी संभावित संयोजन उत्पन्न करने हैं जो n संख्या तक जुड़ते हैं, यह देखते हुए कि केवल 1 से 9 तक की संख्याओं का उपयोग किया जा सकता है। प्रत्येक संयोजन संख्याओं का एक अद्वितीय सेट होना चाहिए। सभी संख्याएं धनात्मक होनी चाहिए, और समाधान में डुप्लिकेट संयोजन नहीं होने चाहिए। तो यदि k = 3 और n = 9, तो संभावित संयोजन [[1,2,6],[1,3,5],[2,3,4]] हैं

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

  • मान लीजिए हम solve नामक एक मेथड बनाकर इसे हल करेंगे। यह रिकर्सिव मेथड होगा, यह k, n, टेम्प ऐरे, और स्टार्ट लेगा। स्टार्ट प्रारंभ में 1 है
  • यदि n = 0
    • यदि टेम्प का आकार = k, तो टेम्प को res में डालें और लौटें
    • i := स्टार्ट से 9 और n के न्यूनतम तक
      • i को टेम्प में डालें
      • solve(k, n – i, टेम्प, i + 1)
      • टेम्प से अंतिम एलिमेंट हटाएं
  • मुख्य मेथड इस तरह होगा
  • टेम्प नामक एक खाली वेक्टर बनाएं
  • solve(k, n, टेम्प)
  • res लौटाएं

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

उदाहरण

#include <bits/stdc++.h> using namespace std; void print_vector(vector<vector<auto> > v){    cout << "[";    for(int i = 0; i<v.size(); i++){       cout << "[";       for(int j = 0; j <v[i].size(); j++){          cout << v[i][j] << ", ";       }       cout << "],";    }    cout << "]"<<endl; } class Solution {    public:    vector < vector <int> > res;    void solve(int k, int n, vector <int> temp, int start = 1){       if(n == 0){          if(temp.size() == k){             res.push_back(temp);          }          return;       }       for(int i = start ; i <= min(9, n); i++){          temp.push_back(i);          solve(k, n - i, temp, i + 1);          temp.pop_back();       }    }    vector<vector<int>> combinationSum3(int k, int n) {       res.clear();       vector <int> temp;       solve(k, n, temp);       return res;    } }; main(){    Solution ob;    print_vector(ob.combinationSum3(2, 9)); }

इनपुट

3 9

आउटपुट

[[1, 8, ],[2, 7, ],[3, 6, ],[4, 5, ],]

  1. - C++ में संयोजन योग II (Combination Sum II)

    मान लीजिए हमारे पास उम्मीदवार संख्याओं का एक समूह है (सभी तत्व अद्वितीय हैं) और एक लक्ष्य संख्या। हमें उम्मीदवारों में उन सभी अद्वितीय संयोजनों को ढूंढना है जहां उम्मीदवार संख्याओं का योग दिए गए लक्ष्य के बराबर हो। वही संख्या उम्मीदवारों से एक से अधिक बार नहीं चुनी जाएगी। यदि तत्व [2,3,6,7,8] हैं औ

  1. - C++ में एलिक्वॉट योग (Aliquot Sum)

    यहां हम देखेंगे कि एलिक्वॉट योग क्या है? n का एलिक्वॉट योग n को छोड़कर n के सभी पूर्ण गुणनखंडों का योग है। उदाहरण के लिए, यदि संख्या 20 है, तो पूर्ण गुणनखंड (1, 2, 4, 5, 10) हैं। तो एलिक्वॉट योग 22 है। एक दिलचस्प तथ्य यह है कि, यदि किसी संख्या का एलिक्वॉट योग संख्या स्वयं है, तो वह संख्या एक पूर्ण

  1. - पायथन में कॉम्बिनेशन सम

    मान लीजिए हमारे पास उम्मीदवार संख्याओं का एक समूह है (सभी तत्व अद्वितीय हैं) और एक लक्ष्य संख्या। हमें उम्मीदवारों में उन सभी अद्वितीय संयोजनों को ढूंढना है जहां उम्मीदवार संख्याओं का योग दिए गए लक्ष्य के बराबर हो। वही संख्या उम्मीदवारों से असीमित बार चुनी जा सकती है। इसलिए यदि तत्व [2,3,6,7] हैं और