इस समस्या में, हमें आकार n का एक एरे और एक धनात्मक पूर्णांक r दिया गया है। हमारा कार्य एरे के तत्वों के आकार r के सभी संभावित संयोजन प्रिंट करना है।
आइए एक उदाहरण लेते हैं समस्या को समझने के लिए −
Input: {5,6,7,8} ; r = 3 Output : {5,6,7}, {5,6,8}, {5,7,8}, {6,7,8}इस समस्या को हल करने का एक दृष्टिकोण तत्वों को फिक्स करना और फिर बाकी पर लूप या पुनरावृत्ति करके सभी संयोजन ढूंढना होगा। इसमें, हमें केवल पहले n-r+1 तत्वों को फिक्स करना होगा और बाकी पर लूप या पुनरावृत्ति करनी होगी।
उदाहरण
#include<iostream> using namespace std; void printRElementCombination(int arr[], int combination[], int start, int end, int index, int r){ if (index == r){ cout<<"{ "; for (int j = 0; j < r; j++) cout << combination[j] << " "; cout<<"}\t"; return; } for (int i = start; i <= end && end - i + 1 >= r - index; i++){ combination[index] = arr[i]; printRElementCombination(arr, combination, i+1, end, index+1, r); } } int main(){ int arr[] = {1, 2, 3, 4, 5}; int r = 3; int n = 5; int combination[r]; cout<<"The combination is : \n"; printRElementCombination(arr, data, 0, n-1, 0, r); }आउटपुट
संयोजन है −
{ 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 }उसी समस्या को हल करने के अन्य तरीके वर्तमान तत्व के संयोजन में समावेश की जांच करना और आवश्यक आकार के सभी संयोजन प्रिंट करना हो सकते हैं। विचार वही है, हम तत्व पर पुनरावृत्ति करेंगे और संयोजन को कॉम्बो एरे में स्टोर करेंगे। लेकिन तत्व को फिक्स नहीं किया जाता है।
नीचे दिया गया प्रोग्राम समस्या को आपके लिए अधिक समझने योग्य बना देगा −
उदाहरण
#include <iostream> using namespace std; void combinationUtil(int arr[], int n, int r, int index, int combo[], int i){ if (index == r){ cout<<"{"; for (int j = 0; j < r; j++) cout << combo[j] << " "; cout<<"}\t"; return; } if (i >= n) return; combo[index] = arr[i]; combinationUtil(arr, n, r, index + 1, combo, i + 1); combinationUtil(arr, n, r, index, combo, i+1); } int main(){ int arr[] = {1, 2, 3, 4, 5}; int r = 3; int n = 5; int combo[r]; cout<<"The combination is : \n"; combinationUtil(arr, n, r, 0, combo, 0); return 0; }आउटपुट
संयोजन है −
{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 }