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

सी ++ में संयोजन


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

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

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

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<vector<int> > 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 n, int k, vector <int> 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<vector<int> > combine(int n, int k) {
      res.clear();
      vector <int> 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++ में, बहुआयामी सरणी को सरल शब्दों में सरणियों के सरणी के रूप में परिभाषित किया गया है। बहुआयामी सरणियों में डेटा को सारणीबद्ध रूप में (पंक्ति प्रमुख क्रम में) संग्रहीत किया जाता है। निम्न आरेख 3 x 3 x 3 आयाम वाले बहुआयामी सरणी के लिए स्मृति आवंटन रणनीति दिखाता है। एल्गोरिदम Begin    

  1. C++ . में रेखा परावर्तन

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

  1. C++ . में विकर्ण ट्रैवर्स II

    मान लीजिए कि हमारे पास nums नामक सूचियों की एक सूची है, हमें अंकों के सभी तत्वों को विकर्ण क्रम में दिखाना होगा। तो, अगर इनपुट पसंद है तो आउटपुट [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16] होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक सरणी रिट परिभाषित करें एक 2डी सरणी को परिभाषित